题解 SP6471 【TDPRIMES - Printing some primes】
fengyuhaoz · · 题解
首先我先介绍一下自己,好的,介绍完了。
切入主题。
首先 我们肯定需要质数筛(不会的小伙伴请看下文代码)
接着
我们需要将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,如果是,就输出。
}
}
}
制做不易,若有不对的地方,请大家斧正,多谢!