1 条题解

  • 0
    @ 2023-1-9 9:25:32

    1

    #include <bits/stdc++.h>
    using namespace std;
    // 返回 x 是否为完全数
    bool f(int x)
    {
        if (x <= 1)
            return false;
        int res = 1; // 记录因子和
        for (int i = 2; i <= x - 1; i++)
            if (x % i == 0)
                res += i;
        // 可以直接用 return res==x; 代替下面的判断
        if (res == x)
            return true;
        else
            return false;
    }
    int main()
    {
        int n;
        cin >> n;
        for (int i = 2; i <= n; i++)
            if (f(i))
                cout << i << "\n";
        return 0;
    }
    

    2

    #include <bits/stdc++.h>
    using namespace std;
    //返回 x 的因子和
    int f(int x)
    {
        if (x <= 1)
            return 0;
        int res = 1;
        for (int i = 2; i * i <= x; i++)
            if (x % i == 0)
            {
                int j = x / i; //找到对应的另一个因子
                res += i;
                if (j != i)
                    res += j;
            }
        return res;
    }
    int main()
    {
        int n;
        cin >> n;
        for (int i = 2; i <= n; i++)
            if (f(i) == i)
                cout << i << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    370
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    (无)
    递交数
    102
    已通过
    59
    上传者