28之后的完美数字

The perfect number after 28

我编写了一个简单的程序来查找紧跟在 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;
}

每次检查前必须初始化sum

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

您应该在 while 循环中初始化 sum 的值,因为它的值在数字检查后没有重置为 0,并且它不断增加后面的值,所以最终会导致错误。