Description
输入一个正整数 repeat (0<repeat<10),做repeat 次下列运算:
输入 2 个正整数m 和n(1<=m,n<=1000),输出m 到n 之间的所有完数(完数就是因子和与它本身相等的数)。
Input
见sample
Output
见sample
Sample Input
Sample Output
1 6 28
分析:
完数是一个数的因数和等于这个数;
代码:
#include<stdio.h>
int fact(int m);
int main()
{
int i,repeat,sum,b,c,m,n;
int a[1000];
scanf("%d",&repeat);
for(i=0;i<repeat;i++)
{
b=0;
scanf("%d %d",&m,&n);
for(;m<=n;m++)
{
if(m==1) //m=1时,是特殊情况
{
a[b]=m; //a[b]用来储存完数的数组
b++;
}
sum=fact(m);
if(sum==m)
{
a[b]=m;
b++;
}
}
for(c=0;c<b-1;c++)
{
printf("%d ",a[c]);
}
printf("%d\n",a[c]);
}
return 0;
}
int fact(int m)
{
int i,sum;
sum=0;
for(i=1;i<m;i++)
{
if(m%i==0)
sum+=i;
}
return sum;
}