如何在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);
如何在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);
這應該給你提供正確的答案。在你的例子中,你找到了0到999,999的總和。我也刪除了不必要的鑄件。
unsigned long long sum = 0;
for (unsigned long long i = 1; i <= 1000000; i++) sum += i;
printf("%llu", sum);
編碼「合約」爲「1至100萬」。最好在代碼中使用那些構成幻數1000001的常量。 – chux
您總結的所有號碼從0到999999。您的結果是怪一些金帝。
有了這個,你應該得到正確的:
unsigned long long sum=0;
for(unsigned long long i=1;i<=1000000;i++){
sum+=i;
}
應該是'我<1000001' –
我<= 1000000正常工作。 –
@yellowantphil你是對的,大腦滑倒。 –
爲什麼投我每次迭代?爲什麼不把我從即將到來的預期類型?如果你想包含1000000,你希望結束條件使用'<='。 – Carcigenicate
https://en.wikipedia.org/wiki/Arithmetic_progression使用一個封閉的公式,不需要迭代很多次。在這種情況下,(1 + 1000000)* 1000000/2 –
'for(unsigned long long i = 1; i <1000001; i ++)'應該給你正確的結果。你所做的是加上0到999,999的總和我相信。 –