埃氏筛法(Sieve of Eratosthenes)是一种简单直观的素数筛法,用来查找一定范围内的素数。
基本思想:从2开始,将每个素数的倍数都标记成合数,一直到目标范围内所有的素数都被筛选出来为止。具体实现方法是使用一个boolean类型的数组,标记索引对应的数字是否为素数。
以下是Java实现埃氏筛法的代码示例:
public List<Integer> sieveOfEratosthenes(int n) {
boolean[] isPrime = new boolean[n + 1];
Arrays.fill(isPrime, true);
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
List<Integer> primes = new ArrayList<>();
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
primes.add(i);
}
}
return primes;
}
该方法的时间复杂度为O(nloglogn),是目前已知最快的算法之一。