Con*_*mpt -2 java perfect-numbers
我正在努力完成一项任务.打印4个完整数字,介于1到10000之间.
在数论中,一个完整数是一个正整数,等于其正确的除数之和,即除数除数之外的正除数之和.
这是我的代码:
public class PerfectNumbers
{
public static void main(String[] args)
{
// Perfect numbers!
for (int number = 1; number < 10000; number++)
{
int sum = 0;
int i = 1;
while (i < number)
{
if (number % i == 0)
{
sum += i;
i++;
}
else
{
i++;
continue;
}
if (sum == number)
{
System.out.println(number);
}
else
{
continue;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
6
24 <--- This one is wrong because next must be 28.
28
496
2016
8128
8190
Run Code Online (Sandbox Code Playgroud)
我的代码有什么问题?谢谢.
该if (sum == number)
检查需要在循环外做.否则,您可能会拾取数字,使得除数子集的总和等于数字.
事实上,24就是一个这样的例子1+2+3+4+6+8=24
.你的代码过早地断定24是完美的,尽管它也可以被12整除.
归档时间: |
|
查看次数: |
1855 次 |
最近记录: |