小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用java.util.BitSet 求素?cái)?shù)的算法

 橙zc 2014-09-25

找出100以內(nèi)的素?cái)?shù)
素?cái)?shù)定義:質(zhì)數(shù),又稱素?cái)?shù),指在一個(gè)大于1的自然數(shù)中,
除了1和此整數(shù)自身外,無法被其他自然數(shù)整除的數(shù)(也可定義為只有1和本身兩個(gè)因數(shù)的數(shù))。

使用java.util.BitSet求素?cái)?shù)的算法:
例如要找100以內(nèi)的素?cái)?shù),
1,聲明一個(gè)BitSet bs,第0,1位置false;其余位是true。
2,從2開始遍歷bs,如果是true就進(jìn)行內(nèi)循環(huán)遍歷。
3,內(nèi)循環(huán)遍歷:從外向內(nèi)環(huán)i開始遍歷bs,每次增長(zhǎng)一個(gè)i(這個(gè)很重要),把內(nèi)循環(huán)j在bs中的位置成false。
代碼如下
for(int i=0;i<bs.size();i++){
 if(bs.get(i)){
  //內(nèi)循環(huán)遍歷
  for(int j=2*i;j<bs.size();j+=i){
   bs.set(j, false);
  }
 }
}
(因?yàn)樗財(cái)?shù)只能被1和它本身整出,所以就把事它2倍,3倍,4倍....的數(shù)全過濾掉)

[html] view plaincopy
  1. package com;  
  2.   
  3. import java.util.BitSet;  
  4.   
  5. public class mianTestSix {  
  6.   
  7.     /**  
  8.      * @param args  
  9.      */  
  10.     public static void main(String[] args) {  
  11.         BitSet bs=new BitSet(100);  
  12.         initBitSet(bs);  
  13.         findSushuBitSet(bs);  
  14.         printSushuBitSet(bs);  
  15.     }  
  16.       
  17.     //第0,1位置成false,其余全部是true.  
  18.     public static void initBitSet(BitSet bs){  
  19.         for(int i=0;i<bs.size();i++){  
  20.             if(i==0||i==1){  
  21.                 bs.set(i, false);  
  22.             }else{  
  23.                 bs.set(i, true);  
  24.             }  
  25.         }  
  26.     }  
  27.     //處理數(shù)據(jù),找到素?cái)?shù)  
  28.     public static void findSushuBitSet(BitSet bs){  
  29.         for(int i=0;i<bs.size();i++){  
  30.             if(bs.get(i)){  
  31.                 //內(nèi)循環(huán)遍歷  
  32.                 for(int j=2*i;j<bs.size();j+=i){  
  33.                     bs.set(j, false);  
  34.                 }  
  35.             }  
  36.               
  37.         }  
  38.     }  
  39.     //位是1的是素?cái)?shù),打印  
  40.     public static void printSushuBitSet(BitSet bs){  
  41.         StringBuffer buf=new StringBuffer();  
  42.         int num=0;  
  43.         for(int i=0;i<100;i++){  
  44.             if(bs.get(i)){  
  45.                 buf.append(i+",");  
  46.                 num++;  
  47.             }  
  48.               
  49.             if((num+1)%20==0&&num!=0){  
  50.                 buf.append("\n");  
  51.             }  
  52.         }  
  53.         System.out.println(buf.toString());  
  54.     }  
  55.       
  56.   
  57. }  


 


輸出:

2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,

 

71,73,79,83,89,97,

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多