0

昨日コーディングについて学び始めたばかりで、今日、特定の数までのすべての完全数を見つけるのに役立つプログラムを作成したいと考えていました。これらは機能しません。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++;
    }
}
4

1 に答える 1

1

a の値ごとに b と c を再初期化する必要があります。

a = 9 に取り組んでいたので、b を 8 に増やし、9 が 8 で割り切れるかどうかを確認してから、b を 9 に増やしてループ while (a > b) を終了したとします。ここで、a を 10 に設定します。この時点で、b は前の反復からすでに 9 に等しくなっています。したがって、10 が 9 で割り切れるかどうかを確認しますが、割り切れません。

int b = 1、c = 0; while (a <= limit) ループに属します。

于 2016-06-27T15:44:16.307 に答える