1 #include <cstdio>
2 #include <cstring>
3 #include <cmath>
4 using namespace std;
5 const int maxn = 10000000;
6 const int maxp = 700000;
7 const int MOD = 1e9;
8 typedef long long LL;
9 int vis[maxn]; //vis[i] = 1是合数、vis[i] = 0是素数或者1
10 int prime[maxp];
11 // 筛素数
12 void sieve(int n){
13 int m = (int)sqrt(n + 0.5); // 避免浮点误差
14 memset(vis,0,sizeof vis);
15 for(int i = 2 ; i <= m ; i++) if(!vis[i])
16 for(int j = i * i ; j <= n ; j += i) vis[j] = 1;
17 }
18 // 生成素数表,放在prime数组中,返回素数的个数
19 int gen_primes(int n){
20 sieve(n);
21 int c = 0;
22 for(int i = 2 ; i <= n ; i++)if(!vis[i])
23 prime[c++] = i;
24 return c;
25 }
26 int main(){
27 int c = gen_primes(100);
28 for(int i = 0 ; i < c ; i++)
29 printf("%d\n",prime[i]);
30 return 0;
31 }