题解 | #完数与盈数#

完数与盈数

https://www.nowcoder.com/practice/df0d850e41894d06a165bf445ec8a8b4

//题目有问题,盈数要自己加一个2
#include <iostream>
#include <vector>
using namespace std;

vector<int> e;//完数
vector<int> g;//盈数
int yinzi(int x)
{
    int sum=0;
    for(int i=2;i*i<=x;i++)
    {
        if(x%i==0)
        {
            if((x/i)!=i)
            {
                sum+=(x/i);
                sum+=i;
            }
            else {
            {
                sum+=i;
            }
            }
        }
    }
    sum++;
    if(sum==x)return 1;//是完数
    else if(sum>x)return 0;//是盈数
    else{
        return 2;//啥也不是
    }
}


int main() {

    for(int i=2;i<=60;i++)
    {
        if(yinzi(i)==1)
        {
            e.push_back(i);
        }
        else if(yinzi(i)==0)
        {
            g.push_back(i);
        }
    }
    cout<<"E:";
    for(int i=0;i<e.size();i++)
    {
        cout<<" "<<e[i];
    }
    //cout<<endl;
    cout<<" G: 2";
    for(int i=0;i<g.size();i++)
    {
        cout<<" "<<g[i];
    }

    return 0;    
}


全部评论

相关推荐

好想摆:一想到我苦苦追求的迪子私下里却是985的马子,我的心就在滴血😭😭😭
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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