题解 SP6471 【TDPRIMES - Printing some primes】

· · 题解

首先我先介绍一下自己,好的,介绍完了。

切入主题。

首先 我们肯定需要质数筛(不会的小伙伴请看下文代码)

接着

我们需要将2的8次方中的质数标记

然后

再判断

最后

输出

不多说了 上代码

#include<bits/stdc++.h>
using namespace std;
bool a[100000001];
int n;
int main(){
    memset(a,true,sizeof(a));//统一为真的是质数
    a[1]=false;//因为1不是质数,所以为假的质数
    for(int i=2;i<=10000;i++)
        if(a[i]) //如果是初步为真的质数就进行
        for(int j=2;i*j<=100000001;j++)     
        a[i*j]=false;//将i和j的倍数排除
    for(int i=1;i<=100000001;i++){
        if(a[i]){//如果是质数
            n++;//质数的数量增加
            if(n%100==1) cout<<i<<endl;因为每隔100个就要输出,所以要判断n是为100的倍数+1,如果是,就输出。
        }
    }
}

制做不易,若有不对的地方,请大家斧正,多谢!