一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数

找因子的方法就是把这个数从1除到这个数自身的一半,余数为0的除数就是因子。比如10,让10从1除到5即可,余数为0的除数都是10的因子,比如1,2,5.
样例输入
1000

样例输出
6 its factors are 1 2 3
28 its factors are 1 2 4 7 14
496 its factors are 1 2 4 8 16 31 62 124 248

不建议用数组,不知道N多大,因子有多少,容易有空间浪费,或者出现数组越界。判断是因子后,直接输出就好。最后面允许有空格。

#include<stdio.h>
int main()
{
    int N,i,sum,j,k,r;

    scanf("%d",&N);

    for(i=1;i<=N;++i)
    {
        sum=0;
        k=i/2;
        for(j=1;j<=k;++j)
        {
            r=i%j;
            if(r==0)
            sum+=j;
        }
        if(sum==i)
        {
            printf("%d its factors are ",i);
            for(j=1;j<=k;++j)
            {
                r=i%j;
                if(r==0)
                printf("%d ",j);
            }
            printf("\n");
        }
    }
    return(1);
}

猜你喜欢

转载自blog.csdn.net/weixin_41133154/article/details/78780106