在javahome项目中 完成素数的多线程判定。功能如下: 1、输入10个大数(超过12位的整数) 2、为每个大数启动一个线程实现素数判断
时间: 2023-06-26 20:05:16 浏览: 101
从键盘任意输入两个整数,输出两数之间的素数,素数判断用函数实现。 扩展要求:1)程序可以循环执行,判断完一组可以再进行下一组;可以设定一个特殊键退出
5星 · 资源好评率100%
好的,首先我们需要设计一个素数判断的方法,可以使用传统的试除法来判断,代码如下:
```java
public static boolean isPrime(long n) {
if (n <= 1) {
return false;
}
for (long i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
```
接下来,我们可以使用线程池来启动多个线程,每个线程处理一个大数的素数判断任务。代码如下:
```java
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class PrimeNumberTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long[] numbers = new long[10];
for (int i = 0; i < 10; i++) {
System.out.print("请输入第" + (i + 1) + "个大数:");
numbers[i] = scanner.nextLong();
}
ExecutorService executorService = Executors.newFixedThreadPool(10);
for (int i = 0; i < 10; i++) {
final int index = i;
executorService.execute(() -> {
if (isPrime(numbers[index])) {
System.out.println(numbers[index] + " 是素数");
} else {
System.out.println(numbers[index] + " 不是素数");
}
});
}
executorService.shutdown();
}
public static boolean isPrime(long n) {
if (n <= 1) {
return false;
}
for (long i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
```
这样,我们就完成了素数的多线程判定。每个大数启动一个线程,由线程池来管理线程的执行,可以大大提高程序的执行效率。
阅读全文