私はかなり新しくコーディングしています。私はCを勉強しています。私のクラスインストラクターは、どの整数が「完全な数字」であるかを教えるプログラムを書く仕事をしました例えば、6 = 1 + 2 + 3のように、6は完璧な数字です。)私は書いたコードにいくつかの問題に直面しており、助言を得ることを望んでいました。Cプログラムで完璧な数字を見つける
#include <stdio.h>
int main(void) {
int number, counter, sum;
sum = 0;
printf("For the integers from 1 to 1000:\n");
for (number = 1; number <= 1000; number++) {
counter = 1;
while (counter <= number - 1) {
if ((number - 1) % counter == 0) {
sum += counter;
}
}
if (sum == number) {
printf("%d is a perfect number.\n", number);
}
}
return 0;
}
これは私が書いたコードです。私が直面している問題は、プログラムを実行すると、「1から1000までの整数のためだけに」印刷され、それが停止するということです。プログラムは終了することさえありません。
私が言及した問題以外にも、アドバイスや提案は大変ありがたいです。
ありがとうございました!
あなたの 'while'ループは無限大です。 –
'if((number - 1)%counter == 0){'これは 'number-1'に最適な数を与えます。それを 'if((number)%counter == 0){'と置き換えてください。 – AntonH
while-conditionの唯一の2つの変種である 'number'と' counter'のどちらもwhileループ内で変更されていません。一度あなたが入っていると、あなたは永久にあなたにいます。 *何かを変えなければなりません。 – WhozCraig