完全数 1 到 n

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 语句。

biz*_*lop 5

打印出每个数字的总和(而不只是当 sum==number 时),您就可以计算出来。

(两条线索:正确的缩进有助于快速找到匹配的 { } 对。并且为您的变量提供描述性名称是值得的。)