为什么这个代码没有结果输出

求【1,n】之间所有的完数

#include 
int main()
{
    int n,i,k,sum=0;
    scanf("%d",&n);
    for(i = 2; i <= n; i++)
    {
        for(k=1;kif(i%k==0)
        sum += k;
        }
        if(i== sum)
        printf("%d\n",i);
    }
    return 0;
}

应该是因为sum在第二个for循环之前没有初始化为0,然后导致后面计算每个数的真因子之和都错误了,所以没有输出,可以 在计算每个数的真因子之和之前把sum初始化为0即可。修改如下:

参考链接:
完全数_百度百科

#include <stdio.h>
int main()
{
    int n,i,k,sum=0;
    scanf("%d",&n);
    for(i = 2; i <= n; i++)
    {
        sum=0;
        for(k=1;k<i;k++)
        {
            
        if(i%k==0)
        sum += k;
        }
        //https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E6%95%B0/370913?fromtitle=%E5%AE%8C%E6%95%B0&fromid=10876772&fr=aladdin 
        if(i== sum)
        printf("%d\n",i);
    }
    return 0;
}
 

img