完数

作者: 一路向后 | 来源:发表于2021-10-19 21:39 被阅读0次

    1.问题描述

    求某一范围内完数的个数
    如果一个数等于它的因子之和,则称该数为完数(或完全数)。例如,6的因子为1,2,3,而6=1+2+3,因此6是完数。

    2.问题分析

    根据完数的定义,解决本题的关键是计算出所选取的整数i的因子,将各个因子累加到变量s,若s等于i,则可认为i为完数。

    3.源码实现

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
        int n = 0;
        int s = 0;
        int i, j;
    
        scanf("%d", &n);
    
        for(i=1; i<n; i++)
        {
            s = 0;
    
            for(j=1; j<i; j++)
            {
                if(i % j == 0)
                {
                    s += j;
                }
            }
    
            if(s == i)
            {
                printf("%d\n", s);
            }
        }
    
        return 0;
    }
    

    4.编译源码

    $ gcc -o test test.c -std=c89
    

    5.运行及其结果

    ./test
    10000
    6
    28
    496
    8128
    

    相关文章

      网友评论

          本文标题:完数

          本文链接:https://www.haomeiwen.com/subject/kpczoltx.html