gpt4 book ai didi

java - 显示每个完全数的程序

转载 作者:行者123 更新时间:2023-12-01 16:43:16 24 4
gpt4 key购买 nike

我的代码可以运行,但对于其中一项测试,当我只需要一个输出时,会打印两个输出。我不确定如何避免这种情况。

这是任务:

编写一个应用程序来显示从 2 到 1,000 的每个完全数。完美数是等于所有能被它整除的数之和的数。例如,6 是完美的,因为 1、2、3 可以整除它,它们的和是 6;然而,12 并不是一个完全数,因为 1、2、3、4、6 可以整除它,而且它们的和大于 12。

提供的模板列出了初始 for 循环,以检查从 2 开始到 1,000 的每个数字。在此 for 循环中,将调用 Perfect() 方法,您将在其中提交代码段来测试每个数字是否符合上述条件。

如果满足这些条件,则将 result 设置为 true,并使用 sum 将方法参数中可被 int n 整除的数字相加。

public class Perfect{
public static void main (String args[]){
final int MAX = 1000;
for(int i = 2; i <= MAX; i++)
if(perfect(i) == true)
System.out.println("The number " + i + " is perfect");
}

public static boolean perfect(int n){
int sum = 1;
int i;
boolean result = false;
for (i = 2; i < n / 2; i++) {
if (n % i == 0) {
sum += i;
}
}
if (sum == i) {
return true;
}
else {
return false;
}
}
}

我的输出:496这个数字很完美729这个数字很完美

预期输出:496这个数字很完美

它只期望打印第一行...

最佳答案

您需要将sum与原始数字n进行比较,而不是与i进行比较。并且需要在循环条件中加 1,否则会错过偶数中的最后一个除法器

public static boolean perfect(int n){
int sum = 1;
for (int i = 2; i < (n / 2) + 1; i++) {
if (n % i == 0) {
sum += i;
}
}
return sum == n;
}

关于java - 显示每个完全数的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58498432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com