题解 | 完数
#include <bits/stdc++.h>
using namespace std;
bool isFI(int x){
int ans=0;
for(int i=1;i<x;i++){
if(x%i==0)ans+=i;
}
return ans==x;
}
int main(){
int n;
while(cin>>n){
for(int i=1;i<=n;i++){
if(isFI(i))cout<<i<<" ";
}cout<<endl;
}
}
小数据量用检索,高数据量用根号判定,更高用数学继续优化
