一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数?
#include <stdio.h>
int main()
{
int i,j,t,sum;
sum=0;
for(i=1; i<1000; i++)
{
for(j=1; j<i; j++)
{
if(i%j==0)
{
sum+=j;
}
}
if(sum==i)
{
printf("%d\n",sum);
}
}
return 0;
}
这个程序初看起来没什么问题,但是因为每次要用sum和i判断,sum只在最初赋值0,所以sum一直累加,正确的应该是把sum放到for循环语句中;
#include <stdio.h>
int main()
{
int i,j,t,sum;
for(i=1; i<1000; i++)
{
sum=0;
for(j=1; j<i; j++)
{
if(i%j==0)
{
sum+=j;
}
}
if(sum==i)
{
printf("%d\n",sum);
}
}
return 0;
}