[板子]线性筛

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
#define maxn 10000005
using namespace std;
int v[maxn],prime[maxn];
int n,tot;
void primes(int x){
    memset(v,0,sizeof(v));
    tot=0;
    for(int i=2;i<=n;++i){
        if(!v[i]){
            v[i]=i;
            ++tot;
            prime[tot]=i;
        }
        for(int j=1;j<=tot;++j){
            if(prime[j]>v[i] || prime[j]>n/i) break;
            v[i*prime[j]]=prime[j];
        }
    }
    return;
}
int main(){
    scanf("%d",&n);
    primes(n);
    for(int i=1;i<=tot;++i){
        printf("%d ",prime[i]);
    }
    printf("\n");
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/theOldChun/p/9927098.html