求1000以内的所有完数

问题:一个数如果恰好等于他的因子之和,这个数就称为“完数”,例如6=1+2+3,编程找出1000以内的所有完数

分析:

因子,就是两个整数相乘,能够得出这个数,因为题目要求没有他本身,所以只要从1循环到这个数的一半,进行寻找因子,例如6=3*2,6=1*6,所以1,2,3,6就是6的因子,但是题目中没有6,所以也就循环一半就可以了。

代码:

main(){

    int n,k[10];

    //scanf("%d",&n);

    //输出因子

    int j,i;

    for(j=2;j<1000;j++){

        //printf("%d  ",j);

        int sum=0,m=0;

        for(i=1;i<=j/2;i++){

            if(j%i==0){

                //i就是因子

                sum+=i;

                k[m]=i;

                m++;

            }

        }

        if(sum==j){

            printf("%d=",j);

            for(i=0;i<m;i++){

                if(i==m-1){

                    printf("%d",k[i]);

                }else{

                    printf("%d+",k[i]);

                }

            }

            printf("\n");

        }

    }

}

结果:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。