一个数的因数可以分成两部分,i<=根号n,i=n/i,其中可能有一个重复的,要先判断i和n/i是否相等
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
int x;
cin>>x;
int sum=0;
for(int i=1;i*i<=x;i++)
{
if(x%i==0)
{
if(i<x) sum+=i;
if(i!=x/i&&x/i<x) sum+=x/i;
}
}
if(sum==x) cout<<x<<" is perfect"<<endl;
else cout<<x<<" is not perfect"<<endl;
}
return 0;
}