1. 程式人生 > >利用數組下標對應指定範圍內的質數,利用數組布爾類型值標誌是否為質數

利用數組下標對應指定範圍內的質數,利用數組布爾類型值標誌是否為質數

com sta integer 素數 布爾 als ring pac body

 1 package com.jdk7.chapter4;
 2 
 3 public class PrimeNumber {
 4     public void getPrime(int range){
 5         boolean[] sourceData = this.isPrime(range);
 6         
 7         if(!(sourceData==null)){
 8             int size = sourceData.length;
 9             Integer[] resultData = new Integer[size];
10 //number定義要放在自增運算循環外,否則可能達不到預期效果 11 int number = 0; 12 for(int i=1;i<size;i++){ 13 if(sourceData[i]){ 14 resultData[i] = i; 15 System.out.print("素數["+i+"] :"+resultData[i].toString()+" "); 16 if
(++number % 10 == 0){ 17 System.out.println(); 18 } 19 } 20 } 21 System.out.println(); 22 System.out.println("質數總個數為: "+number); 23 } 24 } 25 26 private boolean[] isPrime(int range){ 27 boolean
[] tag = new boolean[range+1]; 28 if(range<=0){return null;} 29 for(int i=1;i<range+1;i++){ 30 if(i==1){ 31 tag[i] = false; 32 }else{ 33 tag[i] = true; 34 } 35 } 36 //假設tag[i]為質數,則質數的倍數一定為非質數 37 int sqrt = (int)Math.sqrt(range); 38 for(int i=1;i<=sqrt;i++){ 39 if(tag[i]){ 40 for(int j=(2 * i);j<=range;j+=i){ 41 tag[j] = false; 42 } 43 } 44 } 45 return tag; 46 } 47 }
 1 package com.jdk7.chapter4;
 2 
 3 public class PrimeNumberTest {
 4     public static void main(String[] args) {
 5         PrimeNumber pn = new PrimeNumber();
 6         int range = 100;
 7         pn.getPrime(range);
 8     }
 9 }
10 
11 執行結果:
12 素數[2] :2 素數[3] :3 素數[5] :5 素數[7] :7 素數[11] :11 素數[13] :13 素數[17] :17 素數[19] :19 素數[23] :23 素數[29] :29 
13 素數[31] :31 素數[37] :37 素數[41] :41 素數[43] :43 素數[47] :47 素數[53] :53 素數[59] :59 素數[61] :61 素數[67] :67 素數[71] :71 
14 素數[73] :73 素數[79] :79 素數[83] :83 素數[89] :89 素數[97] :97 
15 質數總個數為: 25

利用數組下標對應指定範圍內的質數,利用數組布爾類型值標誌是否為質數