输入一个整数n;sum 约数之和

1 和 这个数本身是他自己的约数 若 x 为 n 的一个约数,则 y = n / x,为 n 的另一个约数。则令 i 从2开始,每次迭代自增1,结束条件为:i * i < n。则在满足 n mod i = 0 时,i 与 n / i 均为 n 的约数,且 i < n / i。

最后还要判断 i * i = n 的情况,若为真则需加上 i 。

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin >> n;
    int sum = 1 + n;
    for(int i = 2; i * i < n; i++)
    {
        if(n % i == 0) sum += (i + n / i);
        if(i * i == n) sum += i;
    }
    
    cout << sum << endl;
    return 0;
}