利用数组下标对应指定范围内的质数,利用数组布尔类型值标志是否为质数

 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

 

posted @ 2018-02-07 22:33  celineluo  阅读(162)  评论(0编辑  收藏  举报