朴素
void get_prime(int n){
memset(isprime,1,sizeof(isprime));
isprime[1]=0;
for(int i=2;i<=n;i++){
if(isprime[i]){
for(int j=i*i;j<=n;j+=i){
isprime[j]=0;
}
}
}
}
埃筛
void get_prime(int n){
memset(isprime,1,sizeof(isprime));
isprime[1]=0;
for(int i=2;i<=n;i++){
if(isprime[i]){
for(int j=i*i;j<=n;j+=i){
isprime[j]=0;
}
}
}
}
线性筛
bool isprime[MAXN];
int prime[MAXN];
int cnt=0;
void get_prime(int n){
memset(isprime,1,sizeof(isprime));
isprime[1]=0;
for(int i=2;i<=n;i++){
if(isprime[i]){
prime[++cnt]=i;
}
for(int j=1;j<=cnt && i*prime[j]<=n;j++){
isprime[i*prime[j]]=0;
if(!i%prime[j]) break;
}
}
}