找出100以内所有的完数及这些完数的和

题目描述

如果一个数恰好等于它的所有因子,包括一但不包括自身之和,则称之为完数。例如六的因子为一,二,三且6=1+2+3,因此六是完数。使用for语句编写程序,找出100以内所有的完数及这些完数的和

输出形式

完数1+完数2+…=和值

源代码

#include <iostream>
using namespace std;

int main() {
    int sum = 0; // 记录所有完数的和
    cout << "100以内的完数有:";
    for (int i = 1; i <= 100; i++) { // 遍历100以内的每个数字
        int factor_sum = 0; // 记录当前数字i的因子之和
        for (int j = 1; j < i; j++) { // 遍历i的每个因子
            if (i % j == 0) { // 如果j是i的因子,则将j加入到factor_sum中
                factor_sum += j;
            }
        }
        if (factor_sum == i) { // 如果factor_sum等于i,则i是完数
            cout << i << " ";
            sum += i; // 将i加入到sum中
        }
    }

    cout << endl << "这些完数的和为:" << sum << endl; // 输出结果

    return 0;
}

在这个程序中,我们使用两个for循环来遍历100以内的每个数字和每个数字的因子。对于每个数字i,我们先将其所有因子的和记录在变量factor_sum中。如果factor_sum等于i,则说明i是完数,我们将i输出到屏幕上,并将其加入到变量sum中。最后,输出所有完数的和sum

需要注意的是,在第二个for循环中,我们只需要遍历到i的前一个数字j(即j<i),因为1也是i的因子,而i本身不是它的因子。

© 版权声明
THE END
喜欢就支持一下吧
点赞13赞赏 分享