java - 完美数字 1 到 n

标签 java if-statement for-loop 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;
            }

        }
    }
}

输出:24

什么也没有打印出来。不知道出了什么问题。我哪里出错了?我只能使用 while、for 和 else-if 语句。

最佳答案

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

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

关于java - 完美数字 1 到 n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5067760/

相关文章:

java - 如何使用 JDBC 查询 UTF-8 数据库

r - 无法将 ggproto 对象添加在一起

ios - 在 for 循环中将 subview 设置为 nil

r - 计算数据框中每个个体变量的变化次数

java - 如何像 JLabel 一样转换 JScrollPane

java - 斐波那契方法返回序列中的第 n 个数字

java - 如何在onPostExecute中创建一个方法?

if-statement - Clojure:if 中的多个任务

python - 用循环附加到字典

java - 如何在 Spring 中检测未使用的属性