给定 n 个正整数 ai,判定每个数是否是质数。
输入格式
第一行包含整数 n。
接下来 n 行,每行包含一个正整数 ai。
输出格式
共 n 行,其中第 i 行输出第 i 个正整数 ai 是否为质数,是则输出 Yes
,否则输出 No
。
数据范围
1≤n≤100
1≤ai≤(2^31)−1
输入样例:
2
2
6
输出样例:
Yes
No
for(int i=2;i<=x/i;i++) 为什么用i<=x/i 呢?
因为约数都是成对出现的! 举个例子: 12可以被6整除那么12也一定可以被 12/6=2 整除 。所以我们进行了优化将本来的i<=n 优化为i<=x/i
1.不建议写为 i*i<=x 因为i过大时可能溢出 2.也不建议写为 i<=sqrt(x) 因为每次调用函数计算sqrt(x)也很浪费时间。🍠
#include<bits/stdc++.h>
using namespace std;
int pan(int x)
{
if(x<2)return 0;
else
{
for(int i=2;i<=x/i;i++)
{
if(x%i==0)
return 0;
}
}
return 1;
}
int main()
{
int n;
cin>>n;
int x;
for(int i=1;i<=n;i++){
cin>>x;
if(pan(x)==1)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}