相等的最小公倍数 HRBUST - 1328(VJ is same)

G - 相等的最小公倍数

HRBUST - 1328

定义An为1,2,…,n的最小公倍数,例如,A1 = 1,A2 = 2,A3 = 6,A4 = 12,A5 = 60,A6 = 60。

请你判断对于给出的任意整数n,An是否等于An – 1。

Input

本题有多组测试数据,输入的第一行是一个整数T代表着测试数据的数量,接下来是T组测试数据。

对于每组测试数据:

第1行 包含一个整数n (2 ≤ n ≤ 106)。

Output

对于每组测试数据:

第1行 如果An等于An-1则输出YES否则输出NO。

Sample Input

1

6

Sample Output

YES

/**************************************

对于 n ,n为素数时肯定是NO,

对于其他的 n 来说:

如果 n 有一对互质的因子则输出YES,否则输出 NO 。

相关链接:https://baike.so.com/doc/5390805-5627461.html

**********************/

#include<stdio.h>
int  gcd(int a,int b);
int main()
{
	int n,t,i;
	scanf("%d",&t);
	while(t--)
	{
		int flag=1,flag1=0;
		scanf("%d",&n);
		for(i=2;i*i<n;i++)
		   if(n%i==0)
		   {
			   int n1=n/i;
			   if(gcd(i,n1)==1)//公约数等于1,互质
				   flag1=1;
			   flag=0;
		   }
		if(flag)
		{
			printf("NO\n");
			continue;
		}
		if(flag1)
			printf("YES\n");
	    else
			printf("NO\n");
	}
	return 0;
}
int gcd(int a,int b)
{
	int r=a%b;
	while(r)
	{
		a=b;
		b=r;
		r=a%b;
	}
	return b;
}

猜你喜欢

转载自blog.csdn.net/shenyulingyeye/article/details/81360211