Java求20000素数
时间: 2024-09-09 22:11:05 浏览: 82
在Java中,求解一定范围内的素数可以通过多种算法实现,例如埃拉托斯特尼筛法(Sieve of Eratosthenes)或试除法等。对于求20000个素数,我们可以采用更高效的算法来优化性能。
这里提供一个使用埃拉托斯特尼筛法的示例代码,该算法适用于找到小于等于给定数N的所有素数。埃拉托斯特尼筛法的基本思想是从最小的素数开始,逐步排除其倍数,剩下的就是素数。
以下是一个简单的Java实现:
```java
import java.util.Arrays;
public class PrimeSieve {
public static void main(String[] args) {
int n = 20000; // 求解20000个素数
boolean[] prime = sieveOfEratosthenes(n);
int count = 0; // 计数素数个数
for (int i = 2; count < n; i++) {
if (prime[i]) {
count++;
System.out.println(i);
}
}
}
public static boolean[] sieveOfEratosthenes(int n) {
boolean[] prime = new boolean[n + 1];
Arrays.fill(prime, true);
prime[0] = prime[1] = false;
for (int p = 2; p * p <= n; p++) {
if (prime[p]) {
for (int i = p * p; i <= n; i += p) {
prime[i] = false;
}
}
}
return prime;
}
}
```
这段代码中,`sieveOfEratosthenes` 函数负责执行筛法操作,创建一个布尔数组标记从2到n的所有数是否为素数。在主函数中,通过迭代这个数组来输出前20000个素数。
阅读全文