题解 | 完数
#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; } }
小数据量用检索,高数据量用根号判定,更高用数学继续优化