如何用Java编写一个输出小于n的完美数字的函数?

时间:2019-07-09 17:12:19

标签: java math processing

我正在尝试在处理中编写一个函数,以打印出我的作业pset小于n的所有理想数。但是,我很难找到与该问题匹配的算法。

我写了一个for循环,循环遍历1到n之间的所有数字。由于所有除数的和等于完美数,因此我进行了if语句,检查n的余数,然后将它们加到求和变量中,称为“结果”。然后,在此循环结束时,如果结果等于n,则将其打印出来。

void perfect(int n) {

    int result = 0; 
    for(int i = 1; i < n; i++) {
        if(n % i == 0) {
            result = result + i; 
        }
    }
    if( result == n) {
        println(n); 
    }

}

当前,我的代码未打印任何内容。当我将if语句移到最后时,它打印出了所有n值,但不是理想数字。我相信我的代码中某处正在出错,因此n永远不会等于“结果”。

1 个答案:

答案 0 :(得分:0)

您将必须使用嵌套的for循环来获取从1到n的所有理想数。如下:

int i, sum = 1;

System.out.print("Perfect nos from 1 to n are 1,");

for (int j = 2; j <= n; j++)
{
    sum = 1;
    for (i = 2; i < j; i++)
    {
        if (j % i == 0)
            sum = sum + i;
    }
    if (j == sum)
        System.out.print(j + ",");
}