关于约数中缩小遍历范围
如果 d 是 x 的约数,那么 x/d 也是 x 的约束
完全数中约数和不包括本身, x / d != x
725. 完全数
素数中则需要遍历 d <= d / x 即 d * d <= x
726. 质数
#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)
{
sum+=i;
if(x/i!=i&&x/i!=x)
sum=sum+x/i;
}
//cout<<sum<<endl;
}
if(x==1)cout<<x<<" is not perfect"<<endl;
else if(sum==x) cout<<x<<" is perfect"<<endl;
else cout<<x<<" is not perfect"<<endl;
}
return 0;
}