璎珞y 2021-11-17 23:54 采纳率: 100%
浏览 87
已结题

c++入门之函数求完数问题

编写一个判断完数的函数。完数是指一个数恰好等于它的因子之和,如6=1+2+3,6就是完数。

img


要用函数解,如果不是完数就输出no

  • 写回答

1条回答 默认 最新

  • 五一编程 2021-11-18 00:00
    关注
    
    #include"stdio.h"
    int main()
    {
        //编程求完数
        //完数就是一个数恰好等于它的因子之和 例如:6=1+2+3
        //一个数的因子的个数是有限的.最小的因子是1,最大的因子是它本身.
        int i, j,sum=0;//sum的值要初始化一下,因为在内层循环的第一次用的时候没有初始化,编译器会报错
        for (i = 1; i <= 1000; i++)
        {
            sum = 0;//这个sum的初始化值很重要,因为sum是累加功能,每次循环后都会有值,所以要初始化一下
            //sum初始化这个地方最容易出错
            for (j = 1; j <= i / 2; j++)//i除以2的原因是:比如6,6的因子除了本身之外不可能大于他的一半
            {//另外除以2也是相当于除去它本身,比如:6=1+2+3中就没有6
                if (i%j == 0)
                {
                    sum = sum + j;//j从1开始,也就是+1的原因是每个数都至少有一个因子1
                }
            }
            if (sum == i)//判断
            {
                printf("%d的因子:", i);
                //输出它的因子
                for (j = 1; j <= i / 2; j++)
                {
                    if (i%j == 0)
                    {
                        printf("%d ", j);
                    }
                }
                printf("\n");
            }
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月27日
  • 已采纳回答 3月27日
  • 修改了问题 11月19日
  • 创建了问题 11月17日

悬赏问题

  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作