您的位置:首页 > 其它

51Nod-1106 质数检测

2017-09-10 17:20 260 查看
1106 质数检测

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注

给出N个正整数,检测每个数是否为质数。如果是,输出”Yes”,否则输出”No”。

Input

第1行:一个数N,表示正整数的数量。(1 <= N <= 1000)

第2 - N + 1行:每行1个数(2 <= S[i] <= 10^9)

Output

输出共N行,每行为 Yes 或 No。

Input示例

5

2

3

4

5

6

Output示例

Yes

Yes

No

Yes

No

#include<iostream>
#include<cmath>
#define N 100001
using namespace std;
bool num
;
int n,a;
int main()
{
for (int i=2;i<sqrt(N);i++)
{
if (!num[i])
{
for (int k=i*i;k<N;k+=i)
num[k]=true;
}
}
cin>>n;
for (int i=0;i<n;i++)
{
cin>>a;
if (a<N)
{
if (num[a])
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
else
{
int p=sqrt(a),i;
for ( i=2;i<=p;i++)
if (!num[i]&&a%i==0)
break;
if (i!=p+1)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: