使用10个线程求解10000以内的素数,每个线程负责1000范围:线程1负责找1~1000以内的素数,线程2负责找1001~2000以内的素数,……,线程10负责找9001~10000以内的素数。每个线程找到一个素数就马上将其打印出来。java
时间: 2023-12-26 10:57:27 浏览: 76
代码如下:
```java
public class PrimeNumberThread extends Thread {
private int start;
private int end;
public PrimeNumberThread(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 < 2) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
public class Main {
public static void main(String[] args) {
PrimeNumberThread[] threads = new PrimeNumberThread[10];
for (int i = 0; i < 10; i++) {
threads[i] = new PrimeNumberThread(i * 1000 + 1, (i + 1) * 1000);
threads[i].start();
}
}
}
```
首先定义了一个 `PrimeNumberThread` 类,该类继承自 `Thread` 类,重写了 `run` 方法,在该方法中循环判断从 `start` 到 `end` 范围内的整数是否为素数,如果是就将其打印出来。`isPrime` 方法用于判断一个整数是否为素数,具体实现就是从 2 到该数的平方根范围内枚举每个数,如果能够整除则说明该数不是素数。
在 `Main` 类中创建了 10 个 `PrimeNumberThread` 线程对象,每个线程负责一个范围内的素数查找,然后启动线程即可。
阅读全文