题解 | 完全数计算
完全数计算
https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
#include <iostream>
#include <set>
using namespace std;
bool is_perfect(int n) {
if(n < 6) return false;
set<int> factor;
for(int i = 1; i <= n / 2; ++i) {
if(n % i == 0) factor.insert(i);
}
int sum = 0;
for(const int& n: factor) {
sum += n;
}
return sum == n;
}
int main() {
int n;
cin >> n;
int ans = 0;
for(int i = 6; i <= n; ++i) {
if(is_perfect(i)) ++ans;
}
cout << ans << endl;
return 0;
}
