系列的总和1 +(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)+ +(1 + 3 + 5 + 7 + .... +(2n-1) )在C ++中

在这个问题上,我们得到一个整数n。我们的任务是创建一个程序来查找序列1 +(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)+ +(1 + 3 + 5 + 7 + .... +(2n-1))。

从这个系列中,我们可以看到系列的第i个项是第一个i奇数之和。

让我们举个例子来了解这个问题,

输入项

n = 3

输出结果 

14

说明-(1)+(1 + 3)+(1 + 3 + 5)= 14

解决此问题的简单方法是使用嵌套循环,然后将所有奇数加到sum变量中。然后返回总和。

示例

该程序说明了我们解决方案的工作原理,

#include <iostream>
using namespace std;
int calcSeriesSum(int n) {
   int sum = 0, element = 1;
   for (int i = 1; i <= n; i++) {
      element = 1;
      for (int j = 1; j <= i; j++) {
         sum += element;
         element += 2;
      }
   }
   return sum;
}
int main() {
   int n = 12;
   cout<<"Sum of the series 1 + (1+3) + (1+3+5) + (1+3+5+7) + ... + (1+3+5+7+ ... + (2"<<n<<"-1)) is "<<calcSeriesSum(n);
   return 0;
}

输出结果


Sum of the series 1 + (1+3) + (1+3+5) + (1+3+5+7) + ... + (1+3+5+7+ ... + (2*12-1)) is 650


这种方法无效,因为它使用了两个嵌套循环。

一种更有效的方法是在数学上找到通用公式以找到级数的总和。

n个奇数之和,

=(1)+(1 + 3)+(1 + 3 + 5)+…。(1 + 3 + 5 + ... + 2n-1)

= n2

首先,让我们看一下前n个奇数的总和,它代表该系列的各个元素。

系列总和,

sum = (1) + (1+3) + (1+3+5) + … + (1+3+5+ … + 2n-1)
sum = ∑ (1+3+5+ … + 2n-1)
sum = ∑ n2
sum = [n * (n+1) * (2*n -1)]/6

示例

该程序说明了我们解决方案的工作原理,

#include <iostream>
using namespace std;
int calcSeriesSum(int n) {
   return ( n*(n + 1)*(2*n + 1) )/6;
}
int main() {
   int n = 9;
   cout<<"Sum of the series 1 + (1+3) + (1+3+5) + (1+3+5+7) + ... + (1+3+5+7+ ... + (2*"<<n<<"-1)) is "<<calcSeriesSum(n);
return 0;
}

输出结果

Sum of the series 1 + (1+3) + (1+3+5) + (1+3+5+7) + ... + (1+3+5+7+ ... + (2*9-1)) is 285
猜你喜欢