Java编写一个有两个线程的程序,第一个线程用来输出2到50之间的素数第二个线程用来输出51到100之间的素数
时间: 2024-03-08 22:46:49 浏览: 72
以下是一个可能的实现,主要思路是创建两个线程,分别计算2-50和51-100之间的素数,并将结果输出:
```java
public class PrimeNumberPrinter {
public static void main(String[] args) {
Thread t1 = new Thread(new PrimeNumberRunnable(2, 50));
Thread t2 = new Thread(new PrimeNumberRunnable(51, 100));
t1.start();
t2.start();
}
}
class PrimeNumberRunnable implements Runnable {
private int start;
private int end;
public PrimeNumberRunnable(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public void run() {
for (int i = start; i <= end; i++) {
if (isPrime(i)) {
System.out.println(i);
}
}
}
private boolean isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
```
注意到这里使用了一个 `PrimeNumberRunnable` 类来实现线程的逻辑,该类接收一个起始和结束值,然后在线程的 `run()` 方法中计算这个范围内的素数并输出。`isPrime()` 方法用于判断一个数字是否为素数,这里使用了比较基础的算法,即从2到该数的平方根逐个判断是否有因子。
在 `main()` 方法中,我们创建了两个线程并启动它们,分别计算 2-50 和 51-100 之间的素数。因为两个线程是并行执行的,所以它们可以同时计算并输出结果,从而提高了程序的效率。
阅读全文