用java编写一个有两个线程的程序,第一个线程用来计算2~100000之间的素数的个数,第二个线程用来计算100000~200000之间的素数的个数,最后输出结果
时间: 2024-03-25 12:38:38 浏览: 22
好的,这是一个使用 Java 语言编写的多线程程序:
```java
public class PrimeNumberCount {
// 判断是否为素数的方法
public static boolean isPrime(int n) {
if (n <= 1) {
return false;
}
if (n == 2 || n == 3) {
return true;
}
if (n % 2 == 0 || n % 3 == 0) {
return false;
}
int i = 5;
while (i * i <= n) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
i += 6;
}
return true;
}
public static void main(String[] args) throws InterruptedException {
// 第一个线程用来计算2~100000之间的素数的个数
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
int count = 0;
for (int n = 2; n <= 100000; n++) {
if (isPrime(n)) {
count++;
}
}
System.out.println("2~100000之间的素数的个数为:" + count);
}
});
// 第二个线程用来计算100000~200000之间的素数的个数
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
int count = 0;
for (int n = 100001; n <= 200000; n++) {
if (isPrime(n)) {
count++;
}
}
System.out.println("100000~200000之间的素数的个数为:" + count);
}
});
// 启动两个线程
t1.start();
t2.start();
// 等待两个线程结束
t1.join();
t2.join();
// 输出结果
System.out.println("总共的素数个数为:" + (count1 + count2));
}
}
```
这个程序创建了两个线程,分别计算2~100000之间的素数的个数和100000~200000之间的素数的个数。主线程等待两个计算线程结束后,输出总共的素数个数。