top1编程
← 返回题目
题解

【基础】求完全数的个数

1 条题解

  • 0
    @ 2026-7-30 1:35:31

    解题思路

    枚举每个数,并用成对因数的方法求真因数和,再统计完全数个数。

    参考代码

    // 先读入题目给出的输入数据。
    // 用简单的循环完成题目要求。
    #include <iostream>
    using namespace std;
    
    int main() {
        int n, cnt = 0;
        cin >> n;
        for (int a = 2; a <= n; a++) {
            int sum = 1;
            for (int b = 2; b * b <= a; b++) {
                // 因数 b 和 a/b 要一起加入,避免漏算。
                if (a % b == 0) {
                    sum += b;
                    if (b != a / b) sum += a / b;
                }
            }
            if (sum == a) cnt++;
        }
        cout << cnt << endl;
        return 0;
    }
    

    复杂度分析

    代码只使用了简单变量、数组、循环和判断。时间复杂度根据题目的枚举或扫描过程计算,额外空间主要是输入数组,空间复杂度为 O(n)。

    • 1