输入一个整数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;
}