theOldChun

ZJZSZX

[板子]线性筛

#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;
}

posted on 2018-11-08 08:25  theOldChun  阅读(77)  评论(0)    收藏  举报

导航