题目描述:
输出2到1000的完数和盈数,完数(盈数)为其因子之和等于(大于)该数,
测试结果:
AC代码:
#include <stdio.h>
int a[1001]={0};
int isComplete(int num)
{
int sum=0;
for(int i=1;i<num;i++)
{
if(num%i==0){
sum+=i;//如果是因子,那么加上
}
}//计算因子之和
if(sum==num)return 1;
else if(sum>num)return 2;
return 0;//都不是
}//返回1表示完数 2表示盈数,0表示二者都不是
int main()
{
for(int i=2;i<=1000;i++)
{
a[i]=isComplete(i);//
}
printf("完数有:");
for(int i=2;i<=1000;i++)
{
if(a[i]==1)printf("%d ",i);
}
printf("\n");
printf("盈数有:");
for(int i=2;i<=1000;i++)
{
if(a[i]==2)printf("%d ",i);
}
}