use*_*989 -1 java for-loop if-statement perfect-numbers
编写一个算法,打印从 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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:24
什么都打印不出来。不知道怎么回事。我哪里错了?我只能使用 while、for 和 else-if 语句。
打印出每个数字的总和(而不只是当 sum==number 时),您就可以计算出来。
(两条线索:正确的缩进有助于快速找到匹配的 { } 对。并且为您的变量提供描述性名称是值得的。)