for(n=1;n<=1000;n++) { for(i=1;i<=n;i++)这两循环中的<=中的=号都不要,就可以了。完数是因子之和等于它本身,但这个因子,不包括它本身,如6,它的因子有1,2,3,6,除去6本身,那么1+2+3刚好等于6.你的<=中,就把1000本身包括进去了,当然结果是错的了这个回答,你还满意 吧?
for(i=1;i<=n;i++)改为for(i=1;i
if(m==n)printf("%d\n",n);下一行加上m = 0;
有困难,