2017-04-03 23 views
-1

如何在C中找到1至100萬的總和?我嘗試使用無符號長長數據類型(我的代碼如下),但打印500,000,000,000。正確的值是500,000,500,000如何在C中找到1至100萬的總和?

unsigned long long sum = 0; 
for(int i=0;i<1000000;i++) 
    sum += (unsigned long long)i; 
printf("%llu",sum); 
+6

爲什麼投我每次迭代?爲什麼不把我從即將到來的預期類型?如果你想包含1000000,你希望結束條件使用'<='。 – Carcigenicate

+5

https://en.wikipedia.org/wiki/Arithmetic_progression使用一個封閉的公式,不需要迭代很多次。在這種情況下,(1 + 1000000)* 1000000/2 –

+1

'for(unsigned long long i = 1; i <1000001; i ++)'應該給你正確的結果。你所做的是加上0到999,999的總和我相信。 –

回答

4

這應該給你提供正確的答案。在你的例子中,你找到了0到999,999的總和。我也刪除了不必要的鑄件。

unsigned long long sum = 0; 

for (unsigned long long i = 1; i <= 1000000; i++) sum += i; 

printf("%llu", sum); 
+2

編碼「合約」爲「1至100萬」。最好在代碼中使用那些構成幻數1000001的常量。 – chux

1

您總結的所有號碼從0到999999。您的結果是怪一些金帝。

有了這個,你應該得到正確的:

unsigned long long sum=0; 
for(unsigned long long i=1;i<=1000000;i++){ 
    sum+=i; 
} 
+0

應該是'我<1000001' –

+2

我<= 1000000正常工作。 –

+1

@yellowantphil你是對的,大腦滑倒。 –