题目描述
给定 n 个正整数 ai,判定每个数是否是质数。
输入格式
第一行包含整数 n。
接下来 n 行,每行包含一个正整数 ai。
输出格式
共 n 行,其中第 i 行输出第 i 个正整数 ai 是否为质数,是则输出 Yes,否则输出 No。
样例
数据范围
1≤n≤100,
1≤ai≤231−1
输入样例:
2
2
6
输出样例:
Yes
No
算法1
$O(log(n))$
一个数n能被d整除,那么n一定能被n/d 整除, 那么只需要枚举到 <=n/d 的 数即可。 因而写成 for(int i = 2; i <= num / i; ++i){
C++ 代码
#include <iostream>
using namespace std;
bool get(int num){
for(int i = 2; i <= num / i; ++i){
if(num % i == 0) {
return false;
}
}
return true;
}
int main(){
int n = 0;
cin>>n;
while(n--){
int num;
cin>>num;
if(num != 1 && get(num)) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}