题解 | 完数

#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;
    }
    
}

小数据量用检索,高数据量用根号判定,更高用数学继续优化

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务