如何在C中找到1到1百万的总和?我尝试使用无符号长long数据类型(我的代码如下)但打印500,000,000,000
。正确的值是500,000,500,000
。
unsigned long long sum = 0;
for(int i=0;i<1000000;i++)
sum += (unsigned long long)i;
printf("%llu",sum);
答案 0 :(得分:4)
这应该给你正确答案。在您的示例中,您找到的总和为0到999,999。我也为你删除了不必要的演员。
unsigned long long sum = 0;
for (unsigned long long i = 1; i <= 1000000; i++) sum += i;
printf("%llu", sum);
答案 1 :(得分:1)
你总结了从0到999999的所有数字。你的结果是一些奇怪的Kinde。
有了这个,你应该得到正确的一个:
unsigned long long sum=0;
for(unsigned long long i=1;i<=1000000;i++){
sum+=i;
}
答案 2 :(得分:1)
天真方法的效率太可怕了!您应该使用从 0 到 n 的整数之和为 n(n+1)/2 的性质。