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
转载于:https://www.cnblogs.com/celine/p/8428747.html