include[HTML_REMOVED]
int main()
{
int n;
scanf(“%d”,&n);
while(n–)
{
int sum=0;//不要放在while循环外面
int a;
scanf(“%d”,&a);
for(int i=1;ii<a;i++)//ii可以避免超时
{
if(a%i==0)
{
if((a/i)!=a)//防止数据本身出现,还有就是防止两个约数相同的情况,如4*4=16,而4只能作为一个约数
{
sum=sum+i+a/i;//其中两个约数的和
}
else
sum=sum+i;//1是例外
}
}
if(sum==a)//总和与需要你进行判断的整数相等
printf(“%d is perfect\n”,a);
else
printf(“%d is not perfect\n”,a);
}
return 0;
}