//题目有问题,盈数要自己加一个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; }