我将如何在 Java 中编写一个打印出小于 n 的完美数字的函数?



我正在尝试在处理中编写一个函数,该函数为我的家庭作业集打印出所有小于n的完美数字。但是,我找不到与问题匹配的算法。

我写了一个 for 循环,它循环遍历 1 到 n 之间的所有数字。由于它的所有除数之和等于完美数,我做了一个 if 语句来检查 n 的余数,然后将它们添加到一个称为"result"的总和变量中。然后,在这个循环结束时,如果结果等于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 永远不会等于"结果"。

你必须使用嵌套的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 + ",");
}

最新更新