Description
质数是指在大于 11 的自然数中,除了 11 和它本身以外不再有其他因数的自然数。
邓老师非常喜欢质数,现在他给出一个定义 f(x)f(x) ,表示严格大于 xx 的最小质数,例如, f(1)=2,f(2)=3,f(3)=f(4)=5f(1)=2,f(2)=3,f(3)=f(4)=5 。并且 ⌊x⌋⌊x⌋ 表示不大于 xx 的最大整数。
现在邓老师想考考你,总共给出 mm 次询问,每次询问给出一个正整数x。
如果 g(x)g(x) 为质数,输出”YES”,如果 g(x)g(x) 不是质数,输出”NO”。
g(x)=⌊(f(x)+f(f(x)))/2⌋g(x)=⌊(f(x)+f(f(x)))/2
Input
第一行输入给出一个整数 m(1≤m≤105) ,表示总询问次数;
接下来 m 行,每行单独给出一个正整数 x(1≤x≤1018).
Output
共 mm 行,如果 g(x)g(x) 是质数,输出“YES“,如果 g(x)g(x) 不是质数,输出”NO”。(不带双引号)
Sample Input 1
2 1 2Sample Output 1
YES NO
因为f(x)与f(f(x))均为质数,且为相邻的两个质数。
除2外所有的质数均为奇数,且除了x=1时得到的值为2 3,
其它情况下均可以得到两个不连续的质数,那么加和除以二的结果一定在这两个质数中间,两质数中间的数均为合数,且结果向下取整一定为整数,
所有只要不是23一组的质数,其它相邻两个质数和除以二的结果一定为合数。
#include<stdio.h>
int m;
long long int a[100005];
int main()
{
int i = 1;
scanf("%d", &m);
while (m--)
{
scanf("%lld", &a[i]);
if (a[i] == 1) printf("YES\n");
else printf("NO\n");
}
return 0;
}