在C++中求級數√3 + √12 + ... 的前N項和


在這個問題中,我們給定一個整數N。我們的任務是 *求級數√3 + √12 + ... 的前n項和*。

這個級數是 $\sqrt3 + \sqrt12 + \sqrt27 + \sqrt48 + ...$

即,這是一個平方根的級數。

讓我們透過一個例子來理解這個問題:

Input : N = 3
Output : 10.3922

**解釋** −

$\sqrt3 + \sqrt12 + \sqrt27 = 1.7320 + 3.4641 + 5.1961 = 10.3922$

解題方法

解決這個問題的一個簡單方法是找到級數的通項,然後求出前n項的和。使用公式計算和可以將時間複雜度降低到O(1)。

級數為:

$\sqrt3 + \sqrt12 + \sqrt27 + \sqrt48 + ...$

這裡,所有項都有 $\sqrt3$ 。將其作為公因式提出,我們得到:

$\Rightarrow\:\sqrt{3}(\sqrt{1}\:+\:\sqrt{4}\: +\: \sqrt{9} \:+\: \sqrt{16}\:+\:\dotsm)$

$\Rightarrow\:\sqrt{3}(1\:+\:2\:+\:3\:+\:4+\:\dotsm)$

因此,通項為:

$\mathrm{T_n\:=\:n*\sqrt{3}}$

利用這個公式,我們可以求出級數的前n項和:

$\mathrm{Sum}\:=\:\sum{n}^*\sqrt{3}$

$\mathrm{Sum}\:=\:\sqrt{3}^*\sum{n}$

$\mathrm{Sum}\:=\:\sqrt{3}*\frac{n*(n+1)}{2}$

示例

程式演示瞭解決方案的工作原理

#include<iostream>
#include<math.h>
using namespace std;
float calcSumNTerms(float n) {
   return ((sqrt(3)) * ((n*(n+1))/2));
}
int main() {
   float n = 25;
   cout<<"The sum of series upto n terms is "<<calcSumNTerms(n);
   return 0;
}

輸出

The sum of series upto n terms is 562.917

更新於: 2022年1月27日

106 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告