Warm tip: This article is reproduced from serverfault.com, please click

c-28之后的完美数

(c - The perfect number after 28)

发布于 2020-11-28 01:42:56

我编写了一个简单的程序来查找紧随28之后的完美数字(即496),但是它不起作用。不知道我在做什么错。

#include <stdio.h>

int main(){

    int num=29, sum=0, aux=1;

    while(aux!=0){
        for(int i=1; i<num; i++){
            if(!(num%i)){
                sum+=i;
            }
        }

        if(sum == num){
            printf("%d", sum);
            aux=0;
        }else{
            num++;
        }
    }

    return 0;
}
Questioner
wintersun
Viewed
11
MikeCAT 2020-11-28 09:45:54

你必须sum在每次检查之前进行初始化

    while(aux!=0){
        sum = 0; /* add this */
        for(int i=1; i<num; i++){