Description
输入一个正整数 repeat (0<’repeat<10),做repeat 次下列运算:
输入 2 个正整数m 和n(1<=m,n<=1000),输出m 到n 之间的所有完数(完数就是因子和与它本身相等的数)。
Input
见sample
Output
见sample
Sample Input
1
1 100
Sample Output
1 6 28
#include<string.h>
#include<stdio.h>
int main()
{
int repeat,c=0,s,a,b,f;
scanf("%d",&repeat);
for(int aa=0;aa<repeat;aa++)
{
int f=0;
scanf("%d%d",&a,&b);
for(int ii=a;ii<=b;ii++)
{
s=ii;
c=0;
//printf("%d\n",ii);
if(s==1)
{
if(f!=0)
printf(" ");
printf("%d",1);
f=1;
}
for(int i=1;i<=s/2;i++)
{
//printf("|%d|",i);
if(s%i==0)
c=c+i;
}
//printf("|%d|%d|\n",c,s);
if(c==s)
{
if(f!=0)
printf(" ");
printf("%d",c);
f=1;
}
}
printf("\n");
}
return 0;
}
大量参考求素数,故没有太大困难.就是涉及到大量变量.
思路就是完全数定义为因数和=自身,故先求出因数和,然后与自身比较.为了迎合oj的格式,定义f变量,使头尾不存在空格