用C程序找到完美的数字

时间:2017-04-09 02:19:41

标签: c

我是一个相当新的编码和我正在学习C.我的班级讲师给了一个编写程序的任务,该程序将告诉我们哪些整数是"完美的数字" (不包括数字本身的因素加起来的数字。例如,6 = 1 + 2 + 3所以6是一个完美的数字。)我面临着代码I' ve的一些麻烦写的,希望得到一些建议。

#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;
}

这是我写过的代码。我面临的问题是,当我运行程序时,它只打印&#34;对于从1到1000的整数:&#34;然后停止该程序甚至没有终止或任何东西。

除了我提到的问题之外,我们非常感谢任何建议或建议。

谢谢!

1 个答案:

答案 0 :(得分:3)

你的程序没有退出的原因是因为你有一个无限的while循环。 counter始终小于number - 1,因为它们都不会在循环中被修改。某些IDE为此提供了语法高亮样式警告。要解决此问题,请为计数器添加增量:

while (counter <= number - 1) {
    if ((number - 1) % counter == 0) {
        sum += counter;
    }        
    counter++;
}

另外,if ((number - 1) % counter == 0)中也存在逻辑错误(与无限循环无关)。这检查输入数字的减少是否完美。您应该将其更改为if (number % counter == 0)