问题 C: prime check

内存限制:128 MB 时间限制:3.000 S
评测方式:文本比较 命题人:
提交:651 解决:153

题目描述

如果一个正整数大于1且不能写成两个较小的正整数的乘积,则称之为质数

素性测试是一种用于确定输入数是否为素数的算法。例如,Miller-Rabin素性测试是一种概率素性测试。这个问题正是关于素性检验的问题。

让我们将函数f(x)定义为严格大于x的最小素数。例如,f(1) = 2,f(2) = 3,f(3) = f(4) = 5。我们使用$\lfloor x \rfloor$

表示不超过x的最大整数 .

现在给你x,判断g(x)是否为质数.



$g(x)=\lfloor {\frac{f(x)+f(f(x))}{2}} \rfloor$

输入


输入的第一行包含一个整数 T(1<T<10000),表示测试用例的数量。
每个测试用例包含一个整数x在一行中。 (1 <= x <= 109)

输出

对于每个测试用例,如果g(x)是素数,则在单行中输出YES。否则,在单行中输出NO。

样例输入 复制

2
1
2

样例输出 复制

YES
NO

提示

$当x=1,f(x)=2,f(f(x))=f(2)=3,因此g(x)=\lfloor \frac{2+3}{2} \rfloor=2$
$2是质数,所以输出YES$
$当x=2,f(x)=3,f(f(x))=f(3)=5,因此g(x)=\lfloor \frac{3+5}{2} \rfloor=4$
$4不是质数,所以输出NO$