用Java实现埃拉托色尼筛算法
时间: 2024-09-13 18:04:26 浏览: 58
数据结构与算法课设
埃拉托色尼筛法(Sieve of Eratosthenes)是一种用于寻找一定范围内所有质数的经典算法。在Java中实现这个算法,可以按以下步骤操作:
1. 创建一个布尔数组`isPrime[]`,大小设置为你要筛选的最大整数加一。初始时,所有元素都标记为`true`,表示它们都是潜在的质数。
2. 从第一个质数2开始,遍历数组。将每个素数的倍数位置设为`false`,因为它们不是质数。例如,如果发现`isPrime[2 * i]`为`true`,则更新`isPrime[4*i]`、`isPrime[6*i]`等。
3. 每次找到一个新的质数(当前未被标记为非质数的位置),就将其作为下一个质数,然后继续处理其后续倍数。
4. 遍历结束后,剩下的所有`isPrime[i]`为`true`的元素对应的数字就是质数。
下面是简单的Java代码示例:
```java
public class SieveOfEratosthenes {
public static void sieveOfEratosthenes(int n) {
boolean[] isPrime = new boolean[n+1];
Arrays.fill(isPrime, true); // 假定所有数字都是质数
for (int p = 2; p*p <= n; p++) { // 只需检查到√n
if (isPrime[p]) {
for (int i = p * p; i <= n; i += p) { // 将p的倍数标记为非质数
isPrime[i] = false;
}
}
}
// 打印出所有的质数
for (int p = 2; p <= n; p++) {
if (isPrime[p]) {
System.out.print(p + " ");
}
}
}
// 示例:打印前100个质数
public static void main(String[] args) {
int limit = 100;
sieveOfEratosthenes(limit);
}
}
```
阅读全文