题目链接:完全数计算_牛客题霸_牛客网
注意点
思路:枚举法,可以先求出所有约数,然后再判断约数是否真因数
#include <iostream>
using namespace std;
int main()
{
int n;
while (cin >> n){
int cnt = 0;
//枚举2开始到n的所有数
for(int i = 2; i <= n; ++i){
int sum = 0;
//从约数中真因子,从1开始到n/2
for(int j = 1; j <= i/2; ++j){
//如果是因子
if(i % j == 0) sum +=j;
}
//判断是否完美数
if( sum == i) cnt++ ;
}
cout << cnt <<endl;
}
return 0;
}