【发布时间】:2015-07-27 23:11:37
【问题描述】:
我有以下程序,不打印完美数字,只输出不完美的数字 1 和 2。出了什么问题,是范围问题还是循环?在 print 语句后添加 break 语句会导致输出所有数字 1 - 99。
int sum = 0;
for (int i = 1; i < 100; i++) {
for (int j = 1; j <= i; j++) {
if (i % j == 0){
sum += j;}
if (sum == i){
printf("%d\n", i);
}
}
}
【问题讨论】:
-
嗯,1 或 2 都不是完美数。所以我会从那个开始。您应该查看this 并从那里开始工作。
-
内循环的每次迭代,Sum 都应该从零开始。
-
注意100以下只有两个完美数(不是1和2,那是你的循环条件错误造成的),1亿以下只有5个,所以你找不到很快就会有很多人使用这种方法,希望这只是一个练习。 =)
-
在询问有关运行时问题的问题时,请发布干净编译的代码(发布代码甚至没有开始编译。)然后(对于这种情况)发布预期输出和实际输出.由于主题是“完美数字”,因此发布完美数字的定义。
标签: c