java 求第n小的质数
时间: 2023-11-01 17:32:38 浏览: 87
可以使用筛法来求解第n小的质数。具体实现过程如下:
1. 定义一个布尔类型的数组isPrime,用于标记每个数是否为质数。初始化isPrime数组为true。
2. 从2开始遍历到n,对于每个数i,如果isPrime[i]为true,则将i的所有倍数(除了i本身)标记为false,因为它们不是质数。
3. 遍历isPrime数组,找到第n个为true的元素,即为第n小的质数。
下面是Java代码实现:
```
public static int nthPrime(int n) {
boolean[] isPrime = new boolean[n * 20]; // 预估范围,避免不够用
Arrays.fill(isPrime, true);
int count = 0;
for (int i = 2; i < isPrime.length; i++) {
if (isPrime[i]) {
count++;
if (count == n) {
return i;
}
for (int j = i * 2; j < isPrime.length; j += i) {
isPrime[j] = false;
}
}
}
return -1; // 未找到第n小的质数
}
```
调用该方法,传入n即可得到第n小的质数。注意,该算法的时间复杂度为O(nloglogn),空间复杂度为O(n)。
阅读全文