输入一个数n(2<=n<=10^7),输出它是否是素数。如果是,输出Yes,否则输出No。
Input
多组测数据(T<=10^6),每组有一个数字 n(2<=n<=10^7)。
数据量较大,建议使用scanf 进行读入。
Output
每个测试数据输出”Yes”或”No”(不包含引号)
SampleInput
2 3 4 5
SampleOutput
Yes Yes No Yes
这题要用打表的方式做,先把所有奇数变为1 因为奇数有可能是素数 再加以判断
#include<stdio.h> int a[10001000]; int i,j; int n; void pk() { int maxn=10000000; a[2]=1; for(i=3; i<=maxn; i++) { if(i%2==1)///奇数有可能是素数 a[i]=1;///素数变成1 } for(i=3; i<=maxn; i+=2) { if(a[i]==1) { for(j=3*i; j<=maxn; j+=2*i) { a[j]=0; } } } } int main() { pk(); while(scanf("%d",&n)!=EOF) { if(a[n]==0) puts("No"); else puts("Yes"); } }