质数筛的题解
2025-06-30 17:56:23
发布于:浙江
2阅读
0回复
0点赞
我用的是欧拉筛法,模板题。这道题其实不用质数筛。
#include<bits/stdc++.h>
using namespace std;
int n,prime[10000],cnt;
bool is_p[20010];
void euler(int n){
memset(is_p,1,sizeof(is_p));
is_p[0]=is_p[1]=0;
for(int i=2;i<=n;i++){
if(is_p[i])prime[++cnt]=i;
for(int j=1;j<=cnt && (long long)i*prime[j]<=n;j++){
is_p[i*prime[j]]=0;
if(i%prime[j]==0)break;
}
}
}
int main(){
euler(20000);
cin>>n;
for(int i=2;i<=n;i++){
if(is_p[i]){
cout<<i<<" ";
}
}
return 0;
}
这里空空如也
有帮助,赞一个