java指定范围内质数筛选数组
时间: 2024-10-10 13:16:59 浏览: 30
在Java中,可以使用Sieve of Eratosthenes算法来筛选出指定范围内的所有质数。这是一个古老的算法,适合处理较大的整数范围。下面是简单的步骤和代码示例:
首先,创建一个布尔数组,初始所有元素都标记为true,表示它们可能是质数。然后从2开始,将2的倍数标记为非质数,接着找出下一个未被标记的数(即下一个质数),再将其倍数标记为非质数。如此往复,直到遍历完指定范围。
以下是实现该算法的一个基本代码片段:
```java
public static int[] primeNumbers(int start, int end) {
boolean[] isPrime = new boolean[end + 1];
Arrays.fill(isPrime, true);
// 设置 0 和 1 不是质数
isPrime[0] = false;
isPrime[1] = false;
for (int i = 2; i * i <= end; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= end; j += i) {
isPrime[j] = false;
}
}
}
// 提取范围内的质数并存入数组
int[] primes = new int[(end - start) / 2 + 1];
int count = 0;
for (int i = start; i <= end; i++) {
if (isPrime[i] && i > 1) { // 质数大于1(排除1)
primes[count++] = i;
}
}
return Arrays.copyOf(primes, count); // 返回实际长度的数组
}
```
阅读全文