编写一个
printNumbers
以整数 max 作为参数的静态方法,并打印出所有小于或等于 max 的完美数。
起初,我一直得到错误的答案,因为在我将其更改为 j < i 之前,内部循环被设置为 j < max。但是,我不明白为什么这个范围很重要,因为i % j != 0
无论如何都不会,即使 j 的范围更大?
for (int i = 1; i <= max; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
System.out.print(sum + " ");
}
}
如果我更改了内部循环j < max
,则printNumbers(6)
同时给出 1 和 6,但printNumbers(500)
只给出 1 而没有其他数字。