问题 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$
$2是质数,所以输出YES$
$当x=2,f(x)=3,f(f(x))=f(3)=5,因此g(x)=\lfloor \frac{3+5}{2} \rfloor=4$
$4不是质数,所以输出NO$