素数筛

一开始isprime[]初始化为0。从2开始,2是素数,存进prime[],然后2的倍数都标记为1(即不是素数),以此类推,3是素数,进行相同操作,4不是……。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<queue>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<cmath>
 7 #define IO ios::sync_with_stdio(false);cin.tie(0);
 8 #define INF 1e18 
 9 typedef long long ll;
10 using namespace std;
11 int n, cnt = 0, isprime[100010], prime[100010];
12 int main()
13 {
14     cin >> n;
15     for(int i = 2; i <= n; i++){
16         if(!isprime[i]){
17             prime[cnt++] = i;
18             for(int j = 2*i; j <= n; j += i){
19                 isprime[j] = 1;
20             }
21         }
22     } 
23     for(int i = 0; i < cnt; i++){
24         cout << prime[i] << " ";
25     } 
26     return 0;
27 } 

 

posted @ 2018-03-17 17:26  Surprisez  阅读(149)  评论(1编辑  收藏  举报