为什么这些完美的数字查找计划尝试不起作用?

时间:2016-06-27 15:36:12

标签: java perfect-numbers

我刚刚开始学习编码,并希望尝试制作一个程序来帮助找到今天给定数字的所有完美数字。这些都行不通。没有错误消息显示在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++;
    }
}

1 个答案:

答案 0 :(得分:1)

您需要为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(一个&lt; = limit)循环。