1 package ltb20180106;
2
3 public class FindPrime implements Runnable{
4
5 private int prime;
6 private int q;
7 private int w;
8
9 public FindPrime(int nn,int mm) {
10
11 q=nn;
12 w=mm;
13 }
14
15 public void run() {
16
17 getFindPrime(q,w);
18
19 }
20
21 public synchronized void getFindPrime(int min,int max) {
22
23 int k=max;
24 int j=min;
25
26 if(max<min) {
27
28 System.out.println("最大值不能小于最小值,请重新输入!");
29
30 }else if(max<=0||min<0) {
31
32 System.out.println("输入值不能是负数,或者最大值不能是零.");
33 }
34
35 for(int i=k;i>j;i--) {
36
37 if(i==1) { //1不是素数
38
39 continue;
40 }
41
42 prime=i%2;//去掉偶数
43
44 if(prime==0&&i>3) {
45
46 continue;
47 }
48
49 prime=i%3;//去掉整除3的数,但是要大于7
50
51 if(prime==0&&i>7) {
52
53 continue;
54
55 }
56
57 prime=i%5;//去掉整除5的数,但是要大于7
58
59
60 if(prime==0&&i>7) {
61
62 continue;
63
64 }
65
66 prime=i%7;//去掉整除7的数,,但是要大于7
67
68
69 if(prime==0&&i>7) {
70
71 continue;
72
73 }
74
75
76 System.out.println("["+Thread.currentThread().getName()+"]"+"素数:"+i+"["+prime+"]");
77
78
79 }
80
81 }
82
83 public static void main(String[] args) {
84
85 Thread t1=new Thread(new FindPrime(0,1000));
86 t1.start();
87 Thread t2=new Thread(new FindPrime(1001,2000));
88 t2.start();
89 Thread t3=new Thread(new FindPrime(2001,3000));
90 t3.start();
91
92 }
93
94 }