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
基准时间限制: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<cstdio>
#include<cstring>
#include<cmath>
#define MA 100001
bool prim[MA];
int main()
{
int i,j,t,n;
memset(prim,true,sizeof(prim));
for (i=2;i<sqrt(MA);i++)
{
if (prim[i])
{
for (j=i*i;j<MA;j=j+i)
prim[j]=false;
}
}
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
if (n<100001)
{
if (prim[n])
printf("Yes\n");
else
printf("No\n");
}
else
{
bool fafe=true;
int p=sqrt(n);
for (i=2;i<=p;i++)
if (prim[i]&&n%i==0)
{
fafe=false;
break;
}
if (fafe)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}