爱编程的小笨孩


私信TA

用户名:2119394720

访问量:20844

签 名:

我在成长,总有一天我会足够优秀。

等  级
排  名 163
经  验 6860
参赛次数 6
文章发表 44
年  龄 0
在职情况 学生
学  校 黄河科技学院
专  业 软件工程

  自我简介:

一只想要当凤凰的鸡

TA的其他文章

解题思路:首先要理解什么是完数,然后使用双重循环,外层循环用来遍历N以内的所有数,内循环用来判断是不是因子,并将所有因子求和与本身对比,判断是否是完数

注意事项:没次求完因子之和后记得将s清理以便于下一个数的判断

参考代码:

#include<stdio.h>

int main()

{

    int N,i,j,s,k;  

    int a[100];

    scanf("%d",&N);  //接收N

    for(i=1;i<=N;i++)//利用for循环,遍历N内所有数据

    {

        s=0;//变量s用来保存因子的和

        k=0;//k是数字a的下表计数

        for(j=1;j<i;j++)//遍历比i小的所有数

        {

            if(i%j==0)  //对比i小的数进行取余处理,判读是否是i的因子

            {

                s+=j;  //如果满足是i的因子,将其累加求和

                a[k++]=j;//并保存该因子到数组中

            }

        }

        if(s==i)  //判断所有的因子之和与本身的值是否相等,若相等则输出

        {

            printf("%d its factors are ",i);

            for(j=0;j<k;j++)  //用for循环遍历数组中保存的因子并打印

            {

                printf("%d ",a[j]);

            }

            printf("\n");

        }

    }

    return 0;

}


 

0.0分

2 人评分

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

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区