SOl:将原题改为枚举N的每一对因子,计算其是否互素即可。
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
inline int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int n,T,i,j;
scanf("%d",&T);
while(T--)
{
bool flag=true;
scanf("%d",&n);
if(n==2)
{
printf("NO\n");
continue;
}
int tmp=(int)sqrt((double)n);
for(i=2;i<=tmp;i++)
{
if(n%i==0)
break;
}
if(i==tmp+1)
{
printf("NO\n");
continue;
}
for(i=2;i<=tmp;i++)
{
if(n%i==0)
{
int p=n/i;
if(gcd(p,i)==1)
{
flag=false;
break;
}
}
}
if(flag)
printf("NO\n");
else
printf("YES\n");
}
return 0;
}