#P0082. 试除法判定质数

试除法判定质数

题目描述

给你一个整数 ai,ai, 判断它是否是素数。注意 11 不是素数;

Tips:Tips :

  1. 素数的定义:若一个正整数无法被除了 11 和它本身之外的任何自然数整除,则称这个数为质数 ((或素数)),否则该正整数为合数。

  2. 在整个自然数集合中,素数的个数并不是很多,分布比较稀疏,对于一个整数 NN,不超过 NN 的质数大致为 N/lnNN/lnN 个,即每 lnNlnN 个数中大约有 11 个质数。

  3. 根据算术基本定理(又名唯一分解定理)我们可知任何一个正整数,可以表述 22 个或以上的质数的积,例如 12=223112=2^2*3^1,为了方便描述,我们把式子简写为 N=abN=a*b ,其中 aabbNN 的因子,我们假设 a<=ba<=b ,那么可得 aa<=ab<=Na*a<=a*b<=N,即推导出 a<=Na<=\sqrt N也就是说,较小的因子 aa 必然小于或等于 N\sqrt N 换句话说,如果 NN 有因子,它们中至少有一个因子不大于 N\sqrt N。 这样我们在找 NN 的因子时就不需要从 22 枚举到 N1N-1 了,只需枚举到 N\sqrt N 我们就可以判断其是否为质数,时间复杂度大幅降低。

输入格式

第一行输入一个整数 NN,代表有 NN 个数。

第二行包括以空格间隔开的 NN 个数 a1,a2,a3,aNa1,a2,a3…,aN。

输出格式

NN 行,如果是素数输出 Yes , 否则输出 No

数据范围

对于 95%95\% 的数据 1<=N<=1051 <= N <=10^51<=ai<=1051 <= ai <=10^5

对于 100%100\% 的数据 1<=N<=1051 <= N <=10^51<=ai<=23111 <= ai <=2^{31}-1

输入样例:

5
1 2 3 4 5

输出样例:

No
Yes
Yes
No
Yes