【发布时间】:2020-06-14 13:28:12
【问题描述】:
编写一个算法,打印从 1 到 n 的完美数。确定一个数是否完美,将小于该数的所有因数相加。如果总和等于数字,那就完美了。
import java.util.Scanner;
public class Assign_6 {
public static void main(String[] args){
int num,number,sum=0,factor;
System.out.print("Enter Number");
Scanner keyboard = new Scanner (System.in);
number=keyboard.nextInt();
for (num=1;num<number;num++){
for(factor=1;factor<number;factor++){
if(num%factor==0){
sum= sum+factor;
}
if(sum==num){
System.out.println(sum);
}
sum=0;
}
}
}
}
输出:24
没有打印出来。不知道怎么回事。我哪里错了?我只能使用 while、for 和 else-if 语句。
【问题讨论】:
-
这听起来是学习如何使用调试器的完美情况;-)
-
删除了我的答案,因为我给出了答案而不是线索......首先,您需要确保您的代码格式正确。正确格式化后,代码在做什么就很清楚了。
-
@user605989 您正在比较“sum==num”而不是“sum==number”
-
@Dave O 他做得对。该程序应该打印 1 和 n 之间的所有完美数字,包括 1 和 n。
标签: java if-statement for-loop perfect-numbers