gpt4 book ai didi

java - 为什么这些完美数字查找程序的尝试不起作用?

转载 作者:行者123 更新时间:2023-12-01 09:45:42 25 4
gpt4 key购买 nike

我昨天刚刚开始学习编码,今天想尝试制作一个程序来帮助找到给定数字之前的所有完美数字。这些行不通。 Eclipse 上没有显示错误消息,所以我猜这些错误是逻辑上的(?)以下是相关代码片段,有人可以告诉我错误在哪里吗?

protected void actionPerformedProcessBtn(ActionEvent arg0) {
txtS.setText("");
int limit = Integer.parseInt(txtAmmount.getText()), a = 1, b = 1, c = 0;
while (a <= limit) {
while(a > b) {
if (a % b != 0) {
b++;
}
else {
c = c + b;
b++;
}
}
if (c == a)
txtS.append(a + "\n");
a++;
}
}

void ActionPerformedDoBtn(ActionEvent arg0) {
int c = 1, d, e;
txtS.setText("");
while (c <= 1000) {
d = 0;
e = 0;
while(d < c) {
if(c % d == 0)
e += d;
d++;
}
if (e == c)
txtS.append("Perf Num:" + c);
c++;
}
}

最佳答案

您需要为 a 的每个值重新初始化 b 和 c。

假设您正在处理 a = 9,因此您将 b 增加到 8,检查 9 是否能被 8 整除,然后将 b 增加到 9,从而在 (a > b) 时退出循环。现在将 a 设置为 10。此时,b 已等于上一次迭代中的 9。所以你检查 10 是否能被 9 整除,但事实并非如此。

int b = 1,c = 0;属于 while(<= limit)循环内部

关于java - 为什么这些完美数字查找程序的尝试不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38058011/

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