PAT B1013 数素数 (20point(s))

题目链接
注意点:由于不知道第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;
}
发布了81 篇原创文章 · 获赞 0 · 访问量 658

猜你喜欢

转载自blog.csdn.net/weixin_44546393/article/details/105494584