编写一个程序,将 0 到 100 之间的所有数字相加。打印结果
Write a program that adds together all the numbers between 0 and 100. Print the result
我想编写一个程序,将 0 到 100 之间的所有数字相加,但我的代码没有正确地添加所有数字。如何将下一个数字与数字相加,然后打印总和?
这是我的代码:
for(int i = 0; i <= 100; i++){
i+=i;
println(i);
}
结果显示 0、2、6、14... 我需要 1 到 100 的所有数字的总和。
你得到这个奇怪结果的原因是你将这些数字添加到 i 而不是有一个专门的收集器。
int collector = 0;
for (int i = 0; i <= 100; i++) {
collector += i;
println(collector);
}
如果您只想打印一次总和,请将 println(collector) 表达式移到循环之外。
还有一个数学公式可以直接计算前n个数的和
Sum(1, n) = n * (n+1) / 2
处理中:
int Sum(int n){
return n * (n + 1) / 2;
}
formula works因为数字1到N可以这样重新排列和相加:
(1 + N) + (2 + N-1) + (3 + N-2) + . . . . + (N + N/2+1) = total
对于 N = 100:
(1 + 100) + (2 + 99) + (3 + 98) + . . . . + (50 + 51) = 5050
101 + 101 + 101 + . . . . + 101 = 5050
我想编写一个程序,将 0 到 100 之间的所有数字相加,但我的代码没有正确地添加所有数字。如何将下一个数字与数字相加,然后打印总和?
这是我的代码:
for(int i = 0; i <= 100; i++){
i+=i;
println(i);
}
结果显示 0、2、6、14... 我需要 1 到 100 的所有数字的总和。
你得到这个奇怪结果的原因是你将这些数字添加到 i 而不是有一个专门的收集器。
int collector = 0;
for (int i = 0; i <= 100; i++) {
collector += i;
println(collector);
}
如果您只想打印一次总和,请将 println(collector) 表达式移到循环之外。
还有一个数学公式可以直接计算前n个数的和
Sum(1, n) = n * (n+1) / 2
处理中:
int Sum(int n){
return n * (n + 1) / 2;
}
formula works因为数字1到N可以这样重新排列和相加:
(1 + N) + (2 + N-1) + (3 + N-2) + . . . . + (N + N/2+1) = total
对于 N = 100:
(1 + 100) + (2 + 99) + (3 + 98) + . . . . + (50 + 51) = 5050
101 + 101 + 101 + . . . . + 101 = 5050