注意最后不能多一个空格。竟然有4ms就完成的,那我这个岂不是太慢了!还有,不知道为什么完数一定是偶数?因为因子是成对的,我好像还是不懂。奇书都不是完全数,完全数都是偶数。
用时:63ms
#include
#define MAX 10000
int n,num[MAX],a=0;
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int i,j,sum;//注意1不参加循环,直接加上
for (i=2;i<10000;i=i+2)//注意点完数一定是偶数!
{
sum=1;
for (j=2;j<=i/2;j++)//注意减少循环
{
if(i%j==0)
sum+=j;
}
if (i==sum)
{
a++;
num[a]=i;
}
}
while(scanf("%d",&n)==1)
{
printf("%d:",n);
for(i=1;i<=a;i++)
{
if(num[i]<=n)
printf(" %d",num[i]);
}
putchar('/n');
}
return 0;
}