top1编程
← 返回题目
题解

亲和数

1 条题解

  • 0
    @ 2026-7-29 20:23:11
    #include<bits/stdc++.h>
    using namespace std;
    
    int y(int n){
        int s = 1;  // 1 总是因子(除非 n=1)
        if (n == 1) return 0;  // 1没有真因子
        
        for (int i = 2; i * i <= n; i++) {
            if (n % i == 0) {
                s += i;
                if (i != n / i) {  // 避免平方数重复加
                    s += n / i;
                }
            }
        }
        return s;
    }
    
    int main() {
        for (int a = 1; ; a++) {
            int b = y(a);
            if (b > a && y(b) == a) {  // 检查 b>a 避免重复
                cout << a << " " << b;
                return 0;
            }
        }
    }
    
    • 1