#include<iostream>
using namespace std;
int main()
{
long long n,x,sum=0;
cin>>n;
for(int j=0;j<n;j++)
{
cin>>x;
for(int i=1;i<x;i++)
{
if(x%i==0) sum+=i;
}
if(sum==x) cout<<x<<" is perfect"<<endl;
else cout<<x<<" is not perfect"<<endl;
sum=0;
}
return 0;
}
如果i能整除x,那么x/i也一定能整除x,所以每次枚举相加的时候只要找到小的约数就能顺便找到大的,循环是从i=2 开始的,所以i是较小的那个约数,所以循环判断条件就是i<x/i即i*i<x或i<sqrt(x)