gpt4 book ai didi

java - 查找并打印 10000 以下的完美数字(Liang,Java 入门,练习 5.33)

转载 作者:行者123 更新时间:2023-11-30 06:14:55 25 4
gpt4 key购买 nike

完美数是等于所有正除数之和的数,不包括它自己。

对于我的家庭作业,我正在尝试编写一个程序来查找 10000 以下的所有四个完美数字,但是当我运行它时我的代码不起作用而且我不确定为什么(它只运行了一秒钟或两个,然后在不打印任何内容后说“构建成功”)。我将其包含在下面,以及一些解释我的思考过程的评论。有人可以帮助我并告诉我它有什么问题吗?

public class HomeworkTwo {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

//Variable declaration

int n;
int possibleFactor;
int factorSum=0;


/**For each n, the program looks through all positive integers less than n
and tries to find factors of n. Once found, it adds them
together and checks if the sum equals n. Then it repeats till n=9999. **/

for (n=2; n<10000; n++) {
for (possibleFactor = 1; possibleFactor < n; possibleFactor++) {
if (n % possibleFactor == 0) {
factorSum = possibleFactor + factorSum;
}

//Is the number perfect? Printing
if (factorSum == n) {
System.out.println(""+ n +" is a perfect number.");
}
}
}
}
}

最佳答案

您在第一个 for 循环之前将 factorSum 初始化为 0,但您没有将其重置为 0 在尝试每个新的 n 时。这些因素不断累加,永远不会等于要检查的数量。在 n for 循环的开头将其重置为 0

此外,您可能希望在内部 for 循环之后但在外部 for 循环结束之前移动测试和打印数字是一个完美的数字,否则它可能会打印出不必要的内容。

关于java - 查找并打印 10000 以下的完美数字(Liang,Java 入门,练习 5.33),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29568178/

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