题解 | 完数

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

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
2024-12-30 12:18
阿里云 技术管培 22*16 硕士985
Java抽象带篮子:经典阿里云管培,这真不是阿里在打广告吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务