我正在尝试在处理中编写一个函数,以打印出我的作业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永远不会等于“结果”。
答案 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 + ",");
}