暴力筛
#include<iostream>
#include<cstdio>
#include <cstring>
#include <cmath>
using namespace std;
bool prime(int n){
bool flag=1;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0){
flag=0;
break;
}
}
return flag;
}
int main(){
int n;
cin>>n;
for(int i=2;i<=n;i++){
if(prime(i)) cout<<i<<" ";
}
return 0;
}
埃氏筛法
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int a[1000005];
int main(){
int n;
cin>>n;
for(int i=2;i<=sqrt(n)+1;i++){
if(a[i]==0){
for(int j=2;i*j<=n;j++){
a[i*j]=1;
}
}
}
for(int i=2;i<=n;i++){
if(a[i]==0) cout<<i<<" ";
}
return 0;
}
欧拉筛
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int a[1000005];
int p[1000005];
int main(){
int n;
cin>>n;
int l=0;
for(int i=2;i<=n;i++){
if(a[i]==0) p[l++]=i;
for(int j=0;j<l&& i*p[j]<=n;j++){
a[i*p[j]]=1;
if(i%p[j]==0) break;
}
}
for(int i=0;i<l;i++){
cout<<p[i]<<" ";
}
return 0;
}