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

素数的一般筛法和快速线性筛法

时间:2019-10-04 11:26:24      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:合数   als   col   quick   prime   bre   eof   quic   pre   

一般筛法:

1 void prime() {
2     memset(vis, true, sizeof(vis));
3     vis[0] = vis[1] = false;
4     for (int i = 2; i < maxn; i++) {
5         for (int j = 2; i * j < maxn; j++) {
6             vis[i * j] = false;
7         }
8     }
9 }

快速线性筛法:

 1 int prime[N] = {0};
 2 bool isNotPrime[N] = {1, 1};   
 3 int num_prime = 0;  
 4 
 5 void quick_prime() 
 6 {     
 7          for(int i = 2 ; i < N ; i ++)       
 8            {            
 9         if(! isNotPrime[i]) //i是合数的话,i = p1 * p2 * p3 * ···              
10              prime[num_prime ++] = i;    
11         for(int j = 0 ; j < num_prime && i * prime[j] <  N ; j ++)
12             {               
13                   isNotPrime[i * prime[j]] = 1;  
14               if( !(i % prime[j] ) ) // 当p1 == prime[j]时,筛除终止。筛出不大于p1的素数*i           
15                 break;           
16         }        
17     }        
18 }  

 

素数的一般筛法和快速线性筛法

标签:合数   als   col   quick   prime   bre   eof   quic   pre   

原文地址:https://www.cnblogs.com/xiaohanghuo/p/11621461.html

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