目录
牛客HJ56 完全数计算
解析代码
牛客HJ56 完全数计算
完全数计算_牛客题霸_牛客网
解析代码
本题可以通过遍历每一个约数,求和,判断完全数。约数计算可以遍历sqrt(n)的范围。
#include <cmath>
#include <iostream>
using namespace std;
bool isPerfect(int n)
{int sum = 1; // 先把1加上for (int i = 2; i <= sqrt(n); ++i){if (n % i == 0){sum += i;if (n / i != i)sum += n / i;}}return sum == n;
}
int main()
{int n = 0, cnt = 0;cin >> n;for (int i = 2; i <= n; ++i){if (isPerfect(i))++cnt;}cout << cnt;return 0;
}