给定 n 个正整数 ai,判定每个数是否是质数。
输入格式
第一行包含整数 n。
接下来 n 行,每行包含一个正整数 ai。
输出格式
共 n 行,其中第 i 行输出第 i 个正整数 ai 是否为质数,是则输出 Yes,否则输出 No。
数据范围
1≤n≤100
1≤ai≤2^31−1
输入样例:
2
2
6
输出样例:
Yes
No
题目分析
一个数的因数都是成对出现的:例如12的因数有3和4,2和6 所以我们可以只枚举较小的那一个,即根下n,假设较小的为d,较大的为n/d;
时间复杂度 :√n
代码实现
代码优化
- 检测素数可以分为检测2和其他素数
- 从3开始,其他都可以i += 2,以2为步进,比i++少了一半次数
- 每次计算i <= x / i也很花时间,可以先来计算y = sqrt(x),再用i <= y
代码又是什么样的呢?