📅  最后修改于: 2023-12-03 15:37:48.179000             🧑  作者: Mango
埃拉托色尼筛算法(Eratosthenes sieve)是一种简单有效的寻找素数的方法。本文将介绍如何用Java实现埃拉托色尼筛算法。
埃拉托色尼筛算法的基本思想是先把从2开始的连续自然数都标上号,然后从2开始,将其倍数(除了2以外)都打上“非素数”的标记,再到下一个为标记的数,重复操作。最后未被标记的就是素数。
下面是Java实现的代码,使用一个布尔数组表示每个自然数是否为素数。
public static void eratosthenesSieve(int n) {
boolean[] isPrime = new boolean[n+1];
Arrays.fill(isPrime, true);
isPrime[0] = false;
isPrime[1] = false;
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
System.out.print(i + " ");
}
}
}
public static void main(String[] args) {
int n = 30;
eratosthenesSieve(n); // 输出素数: 2 3 5 7 11 13 17 19 23 29
}
埃拉托色尼筛算法是一种简单有效的素数寻找方法,其代码实现也容易理解。使用该算法可以在较短的时间内寻找数值范围内的素数,对于进行一些数论运算或质因数分解等操作是非常有帮助的。