试除法求约数。
int check(int n)
{
int res=1;
for(int i=2;i*i<=n;i++)
if(n % i == 0)
{
res+=i;
if(i != n/i) res+=n/i;
}
return res;
}
int main()
{
vector<int> e,g;
for(int i=2;i<=60;i++)
{
if(check(i) == i) e.pb(i);
else if(check(i) > i) g.pb(i);
}
cout<<"E:";
for(int i=0;i<e.size();i++)
cout<<' '<<e[i];
cout<<endl;
cout<<"G:";
for(int i=0;i<g.size();i++)
cout<<' '<<g[i];
cout<<endl;
//system("pause");
return 0;
}