题解 | 完全数计算

完全数计算

https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84

#include <iostream>
#include <set>
using namespace std;
typedef long long ll;
ll cnt;

void check(int x)
{
    set<int> st;  // 用集合去重
    st.insert(1);  // 先放入1,防止集合出现x本身
    for(int i=2;i*i<=x;i++){
        if(x%i==0){    // 往集合插入成对约数
            st.insert(i);
            st.insert(x/i);
        }
    }
    int sum = 0;
    for(auto i:st) sum+=i;  // 约数和
    if(sum==x) cnt++;
}

int main() {
    int n;cin>>n;
    for(int i=6;i<=n;i++)check(i);
    cout<<cnt;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务