#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 100000005;
bool isprime[N]; //isprime[x] true x是质数,false x不是质数
int aiprime(int n)
{//正确标记n以内的数字的质数状态
memset(isprime, true,sizeof(isprime));
isprime[0] = isprime[1] = false;
for (int i = 2; i <= n; i ++ ) {
if (isprime[i]) {
for (int j = 2; i * j <= n; j++) {
isprime[i * j] = false;//这部分是将质数的倍数标记为false
}
}
}
}
// int a[N];
int main()
{
int n,cnt=0,sum=0;//cnt 用来统计质数个数
cin >> n;
aiprime(n);//调用
for (int i = 0; ; i++) {
if (isprime[i]){
sum+=i;
cout<<i<<endl;
}
if(sum>n) break;
}
cout << cnt;
return 0;
}
标准埃筛竟然没过