题目描述
一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如,6的真因子为1 2 3,而6=1+2+3因此,6是“完数”。对于给定的一个区域m到n(m <=n),如果有完数,则输出m到n之间的的所有完数之和;如果没有完数,则输出NO(大写)。
输入描述
m和n,用空格隔开
输出描述
如果有完数,则输出m到n之间的的所有完数之和;如果没有完数,则输出NO(大写)。
输入样例
1 6
输出样例
6
供参考:
#include<stdio.h>
int main()
{
int m,n,i,j,s=0,sum=0;
scanf("%d%d",&m,&n);
if (m > n) s=m,m=n,n=s;
for(i=m;i<=n;i++)
{
for(j=1,s=0;j<i;j++)
{
if(i%j==0)
s+=j;
}
if(i==s)
sum+=i;
}
if (sum != 0)
printf("%d",sum);
else
printf("NO");
return 0;
}
你好,如有帮助,请采纳
#include
int factorsum(int n)
{
int i,sum=0;
for(i=1;i
{
if(n%i==0)
sum+=i;
}
return sum;
}
int main()
{
int n,m,i,flag;
while(scanf("%d%d",&m,&n)!=EOF)
{
flag =1;
for(i=m;i<=n;i++)
{
if(i==factorsum(i))
{
if(flag)
{
printf("%d",i);
flag=0;
}
else
{
printf(" %d",i);
}
}
}
printf("\n");
}
return 0;
}