WHQ12138


私信TA

用户名:WHQ2138

访问量:489

签 名:

等  级
排  名 34459
经  验 401
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 中南民族大学
专  业

  自我简介:

TA的其他文章

解题思路:利用一个一维数组来记录每个完数的因数,因为较大完数的因数一定比上一个完数的因数数量多,所以每次循环可以不用初始化数组;如果不按照样例输出,后两个for循环可以并为一个,初始思路就是每对因数存在相邻的位置。

注意事项:

参考代码:

#include<stdio.h>

int main()

{

  int N,i,j,a,b;

    int n=0;

    int Sn=0;

    int k=0;

    int A[1000]={0};

    scanf("%d",&N);

    for(i=2;i<=N;i++)//找因数存到数组A中

    {

        A[n]=1;

        Sn=Sn+A[n];

        n++;

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

        {

            a=i%j;

            b=i/j;

            if(a==0&&b>=j)

            {

                A[n]=j;

                Sn=Sn+A[n];

                n++;

                A[n]=b;

                Sn=Sn+A[n];

                n++;

            }

        }

        if(i==Sn)//判断是否为完数

        {

            printf("%d its factors are %d ",i,A[0]);

            for(k=1;k<n;k=k+2)

            {

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

            }

            for(k=n-1;k>0;k=k-2)

            {

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

            }

            printf("\n");

        }

        n=0;

        Sn=0;

    }

return 0;

}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区