top1编程
← 返回题目
题解

【入门】因子求和

1 条题解

  • 0
    @ 2026-7-30 1:33:02

    解题思路

    因子通常成对出现,只枚举到平方根,把两个成对因子加入答案,并排除1和n。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        long long n, sum = 0;
        cin >> n;
        // 因子总是成对出现,只检查到平方根就够了。
        for (long long i = 2; i * i <= n; i++) {
            if (n % i == 0) {
                // i是一个因子,同时把与它成对的因子也加上。
                sum += i;
                if (i * i != n) sum += n / i;
            }
        }
        // 1和n不属于题目要求的因子,所以没有加入。
        cout << sum;
        return 0;
    }
    

    复杂度分析

    代码只使用了简单变量、循环和字符串。设输入长度为 n,时间复杂度为 O(n^2)(若有嵌套枚举则按实际循环计算),额外空间复杂度为 O(n)。

    • 1