我不知道我的代码有什么问题。它应该打印 1 到 100 之间的所有完美数字。我尝试使用嵌套 for 循环、do while 循环和 for 循环。但是,代码似乎不正确。
class CompProject1
{
public static void main()
{
int num, sum=0;
int i;
for(num=1; num<100; num++)
{
for(int j = 1; j<=num ; j++)
{
if(num%j==0)
{
sum = sum+j;
}
}
if(sum==num)
{
System.out.println(sum);
}
}
}
}
最佳答案
将代码更改为:
public static void main(String[] s1) throws Exception {
int num, sum = 0;
int i;
for (num = 1; num < 100; num++) {
for (int j = 1; j <= num - 1; j++) { // change made here
if (num % j == 0) {
sum = sum + j;
}
}
if (sum == num) {
System.out.println(sum);
}
sum = 0; // change made here
}
}
要点:
- 完成内部迭代后将
sum
重置为 0 - 在你的内部
for循环
中,你需要检查是否直到num - 1
而不是num
,因为每个数字都可以被自己整除
关于java - 使用 Java 打印 1-100 之间的完美数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54538708/