#129. 质数判断(优化版)

质数判断(优化版)

说明

质数(也叫素数)是指在大于 1 的自然数中,除了 1 和它自身以外不再有其他正因数的数。

例如:2, 3, 5, 7, 11, 13 都是质数;4, 6, 8, 9, 10 都不是质数。

给定 T 个正整数,请你判断每个数是否是质数。

输入格式

第一行,一个整数 T(1T1001 \le T \le 100),表示要判断的数的个数。

接下来 T 行,每行一个整数 n(2n1092 \le n \le 10^9),表示要判断的数。

输出格式

对于每个 n,输出一行:如果是质数输出 Yes,否则输出 No

5
2
7
9
17
100
Yes

Yes No Yes No

</p>

提示

判断 n 是否为质数时,只需检查 2 到 n\sqrt{n} 之间是否有 n 的因子即可。

原理:如果 n=a×bn = a \times b,那么 a 和 b 中至少有一个 n\le \sqrt{n}。所以如果 n 在 2n2 \sim \sqrt{n} 范围内没有因子,则 n 是质数。

实现方式:

  • Python: for i in range(2, int(n**0.5)+1):
  • C++: for (int i=2; i*i<=n; i++)

另外,可以预先判断:如果 n < 2 则不是质数;如果 n = 2 或 n = 3 则是质数;如果 n 是大于 2 的偶数则直接判断为不是质数。