编写一个算法来打印从 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 语句。
最佳答案
打印出每个数字的总和(而不仅仅是当 sum==number 时),您就能算出来。
(两条线索:正确的缩进有助于快速找到匹配的 { } 对。为变量提供描述性名称是值得的。)
关于java - 完美数字 1 到 n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5067760/