题目描述
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。 求出2到60之间所有“完数”和“盈数”。
代码来源于博主个人,备考题目不代表考试题目、不代表答案解析,仅供作参考
#include<stdio.h>
int main()
{
int len1=0,len2=0;
int perfect[5];
int abundant[40];
for(int i=2;i<=60;i++)
{
int sum=0;
for(int j=1;j<i;j++)
{
if(i%j==0)//因子
{
sum+=j;
}
}
if(sum==i)
{
perfect[len1++]=i;
}
else if(sum>i)
{
abundant[len2++]=i;
}
}
printf("E:");
for(int i=0;i<len1;i++)
{
printf(" %d",perfect[i]);
}
printf("\n");
printf("G:");
for(int i=0;i<len2;i++)
{
printf(" %d",abundant[i]);
}
return 0;
}