题目:
编写一个有两个线程的程序,第一个线程用来计算2~100000之间的素数的个数,第二个线程用来计算100000~200000之间的素数的个数,最后输出结果。
Demo.java
package com.sushuThread;
public class Demo {
public static void main(String[] args) {
SuThread st = new SuThread("su");
SuThread st1 = new SuThread("dasu");
st.start();
st1.start();
}
}
SuThread .java
package com.sushuThread;
public class SuThread extends Thread {
public SuThread() {
}
public SuThread(String name) {
super(name);
}
int num = 0;
int num1= 0;
public void run() {
String name = Thread.currentThread().getName();
if (name.equals("su")) {
//是否为质数
boolean flag = true;
for (int i = 1; i <= 100000; i++) {
flag = true;
for (int j = 2; j < i; j++) {
//若能除尽,则不为质数
if ((i % j) == 0) {
flag = false;
break;
}
}
//如果是质数,则打印
if (flag) {
//System.out.println(i);
num ++;
}
}
}
// try {
// sleep(2000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
//大素
if (name.equals("dasu")) {
//是否为质数
boolean isPrime;
for (int i = 100000; i <= 200000; i++) {
isPrime = true;
for (int j = 2; j < i; j++) {
//若能除尽,则不为质数
if ((i % j) == 0) {
isPrime = false;
break;
}
}
//如果是质数,则打印
if (isPrime) {
//System.out.println(i);
num1++;
}
}
}
if(name.equals("su")){
System.out.println("共有[1,100000]:"+num);
}
if (name.equals("dasu")){
System.out.println("共有[100000,200000]:"+num1);
}
}
}
运行结果: