代码如下:
#include <stdio.h>
#define max_op 20000
int num[max_op+5];
void prime(){
for(int i=2;i<max_op;i++){
if(!num[i]) num[++num[0]]=i;
for(int j=1;j<=num[0];j++){
if(num[j]*i>max_op) break;
num[num[j]*i]=1;
if(i%num[j]==0) break;
}
}
}
int main(){
int n;
scanf("%d",&n);
prime();
printf("%d",num[n]);
return 0;
}
运行结果:
利用第一层循环的i乘已知素数标记Book为1 遇到i可以被素数余0的时候退出这一层循环