通常、ふるい方法は、高速リニアふるいをプライミング

一般的なふるい法:

1  空隙プライム(){
 2      のmemset(VIS、はsizeof (VIS))。
3      VIS [ 0 ] = VIS [ 1 ] = 4      のためには、int型、I = 2 ; iがMAXN <; Iは++ ){
 5          ためINT J = 2、iはJ <MAXN *; jは++ ){
 6              VISは[iがjは*] = 7          }
 8      }
 9 }

高速リニアふるい法:

1  INTプライム[N] = { 0 };
 2  ブール isNotPrime [N] = { 11 }。   
3  INT num_prime = 0 4  
5  ボイドquick_prime() 
 6  {     
 7           ためのint型 I = 2 ; iがNを<; Iは++ 8             {            
 9          もし(!isNotPrime [I])// iは是合数的话、I = P1 *のP2 *のP3 *···              
 10               プライム[num_prime ++] = I;    
11          のためにINT J = 0 ; J <num_primeプライム&& * I [J] <N; J ++ 12は             、{               
 13は                    isNotPrime [*プライムI [J] = 1 ;  
 14                IF(!(%I )プライム[J])とき// p1は==プライム[j]は、終了スクリーニングする場合。ふるいは、P1はI *を超えない素数           
 15                  ブレーク;           
 16          }        
 17      }        
 18です }  

 

おすすめ

転載: www.cnblogs.com/xiaohanghuo/p/11621461.html