码迷,mamicode.com
首页 > 其他好文 > 详细

筛质数

时间:2020-02-01 00:57:16      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:src   break   using   div   get   col   oid   open   eve   

技术图片
 1 #include <iostream>
 2 using namespace std;
 3 
 4 const int N = 1e6+10;
 5 
 6 int cnt;
 7 int flag[N], prim[N];
 8 //埃式筛法 O(nlog(log(n)))
 9 void get_prime(int n){
10     for(int i = 2;i <= n;++i){
11         if(!flag[i]){//i 没有删除
12             prim[++cnt] = i;//prim里存的是所有质数
13         }
14         //用来删除当前所有质数的倍数
15         for(int j = i+i;j <= n;j += i)
16             flag[j] = true;
17     }
18 }
19 //线性筛法On, 背下来
20 void get_primes(int n){
21     for(int i = 2;i <= n;++i){
22         if(!flag[i])prim[++cnt] = i;
23         for(int j = 1;prim[j] <= n/i;++j){
24             flag[i*prim[j]] = true;
25             if(i % prim[j] == 0)break;
26         }
27     }    
28 }
29 
30 
31 int main(){
32     int n;
33     cin >> n;        
34     get_primes(n);    
35     cout << cnt << endl;
36 }
View Code

 

筛质数

标签:src   break   using   div   get   col   oid   open   eve   

原文地址:https://www.cnblogs.com/sxq-study/p/12247097.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!