题目链接
注意点:由于不知道第10000个素数有多大,可以将上限设的高一点,1000000比较合适。
#include<cstdio>
const int maxn=1000000;
int prime[maxn],p[maxn]={0},pnum=0;
void find_prime(){//筛法打印素数表
for(int i=2;i<maxn;i++){
if(p[i]==0){
prime[pnum++]=i;
if(pnum>=n) break;//第n个以后的素数不用管
for(int j=i+i;j<maxn;j+=i){
p[j]=1;
}
}
}
}
int main(){
find_prime();//要记得调用
int m,n,j=0;
scanf("%d%d",&m,&n);
for(int i=m-1;i<n;i++){//下标从零开始
printf("%d",prime[i]);
j++;
if(j!=10&&i!=n-1) printf(" ");
//末行最后一位也不允许有多余空格
if(j==10){
printf("\n");
j=0;}
}
return 0;
}