求【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;
}