素数筛
//找出从0到n的所有素数
#include<iostream>
#include<set>//9592
#include<vector>
#include<string>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<algorithm>
typedef long long ll;
using namespace std;
int main() {
int n;
cin>>n;
int prime[n+2]={0};
prime[0]=prime[1]=1;
int temp=sqrt(n);
cout<<temp;
for(int i=2;i<=temp;++i){
if(!prime[i]){
for(int j=i*i;j<=n;j+=i){//从2i到3i到i*i-1 之前都已经剔除过了,所以直接从i*i开始
prime[j]=1;//剔除
}
}
}
for(int i=0;i<=n;++i){
if(!prime[i]) cout<<i<<" ";
}
return 0;
}

文远知行公司福利 582人发布