2014-09-24 47 views
-1

我想弄清楚我的公式sum2出了什麼問題。它應該等於sum1,它等於784.公式sum2 =(1 + 2 + ... + n)^ 2。目前使用此代碼,我得到sum2等於140.任何人都可以告訴我,我應該如何解決這個問題?或者給一個提示找不到(1 + 2 + ... n)^ 2的總和?

#include <iostream> 
#include <cmath> 
using namespace std; 

int main() 
{ 
    double n = 7; 
    double sum1 = 0; 
    double sum2 = 0; 
    double sum3 = 0; 
    double sum4 = 0; 
    double i = 1; 

    while(i <= n){ 

      sum1 = sum1 + pow(i,3); 
      sum2 = sum2 + (i)*(i); 
      i++; 
}    

      sum3 = (pow(n,2)*pow((n + 1),2))/4; 
      sum4 = n*(n+1)*(2*n + 1)/(4+2); 

這只是錯過了在SUM1計算錯誤的代碼

+1

'sum1'和'sum2'以不同的方式計算出的,SUM1由'加入到I^3'而'sum2'由'加入到I * I = I^2'。 – 2014-09-24 04:02:27

+4

提示:(1^2 + 2^2 + 3^2 ... + 7^2)是不一樣的(1 + 2 + 3 + ... 7)^ 2 – 2014-09-24 04:02:29

+0

您的代碼計算錯誤數。並且有一個簡單的公式來計算前N個自然數的總和。 – juanchopanza 2014-09-24 05:48:33

回答

0
while(i <= n){ 

      sum1 = sum1 + pow(i,3); 
      sum2 = sum2 + i; 
      i++; 
} 
sum2 = sum2*sum2; 

的一半。 @FreeNickname釘了它 - 這是正確的答案。

+0

錯過了sum1運算中的錯誤。 @FreeNickname釘住了它 - 這是正確的答案 – elimad 2014-09-24 05:45:31

1

你必須找到(1 + 2 + 3 ... + 7)^2。不(1^2 + 2^2 + 3^2 ... + 7^2)所以乘sum2除了做till n=7;

經過這麼的內部,而這樣做:

sum2 = sum2 + i; 

,並同時出方做:

sum2 = sum2*sum2; 

改變你的代碼如下:

#include <iostream> 
#include <cmath> 
using namespace std; 

int main() 
{ 
    double n = 7; 
    double sum1 = 0; 
    double sum2 = 0; 
    double sum3 = 0; 
    double sum4 = 0; 
    double i = 1; 

    while(i <= n){ 

      sum1 = sum1 + i; 
      sum2 = sum2 + i; 
      i++; 
}    
cout<<pow(sum1, 2);// both will be same 
cout<<sum2*sum2; 
      sum3 = (pow(n,2)*pow((n + 1),2))/4; 
      sum4 = n*(n+1)*(2*n + 1)/(4+2); 

} 
2

首先,您的代碼爲sum1目前發現 1^3 + 2^3 + ... + n^3,而不是(1 + 2 + ... n)^2

其次,你的sum2代碼目前發現 1^2 + 2^2 + ... + n^2而不是(1 + 2 + ... n)^2

爲了解決這個問題,改變2線while循環中:

while(i <= n){ 
    sum1 = sum1 + i; 
    sum2 = sum2 + i; //or, since they are the same now, you can accumulate the sum in sun1 and then do sum2 = sum1 outside the while loop. 
    i++; 
} 

然後在使用任何你想要計算平方的技術之後:

sum1 = pow(sum1, 2); //2, not 3 
sum2 = sum2 * sum2; 
+0

或計算'n *(n + 1)/ 2.0'並將其平方。 – juanchopanza 2014-09-24 05:47:41

+0

@ juanchopanza,是的,謝謝你的建議:)算術進程(對於那些有興趣的人來說,公式來自哪裏)。 – FreeNickname 2014-09-24 06:21:33

相關問題