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;
}

本文介绍了一种通过枚举整数N的所有因子对,并判断这些因子对是否互质来解决问题的方法。使用了C++语言实现,涉及到了求最大公约数的算法,通过输入整数T和N进行多次测试,最终输出YES或NO。

672

被折叠的 条评论
为什么被折叠?



