zcmu.oj-1096 求完数

Description

输入一个正整数 repeat (0<repeat<10),做repeat 次下列运算:
输入 2 个正整数m 和n(1<=m,n<=1000),输出m 到n 之间的所有完数(完数就是因子和与它本身相等的数)。

Input

见sample

Output

见sample

Sample Input

11 100

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;
}

猜你喜欢

转载自blog.csdn.net/kyrieee/article/details/80180750