π§ μλΌν μ€ν
λ€μ€μ 체 (Sieve of Eratosthenes) κ°λ¨ μ 리
μλΌν μ€ν
λ€μ€μ 체λ N μ΄νμ λͺ¨λ μμλ₯Ό λΉ λ₯΄κ² ꡬνλ λνμ μΈ μκ³ λ¦¬μ¦μ΄λ€.
μμκ° μλ μ(ν©μ±μ)λ₯Ό μ§μλκ°λ λ°©μμΌλ‘ μλνλ©°, μκ° λ³΅μ‘λκ° λ§€μ° ν¨μ¨μ μ΄λ€.
β ν΅μ¬ μμ΄λμ΄
2λΆν° NκΉμ§ λͺ¨λ μλ₯Ό μμλΌκ³ κ°μ νλ€.
νμ¬ μμ λ°°μλ€μ λͺ¨λ μ κ±°νλ€.
λ¨μ μλ€μ μ λΆ μμλ€!
π§ ꡬν ν΅μ¬ μ½λ (Java)
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;
}
}
}
π μ€λͺ
isPrime[i] == true β iλ μμ
i * i <= NκΉμ§λ§ κ²μ¬ν΄λ μΆ©λΆ
j = i * iλΆν° μμ β μ΄λ―Έ μ§μμ§ μ μ€λ³΅ μ κ±°
π§Ύ μμ½
νλͺ© μ€λͺ
μκ° λ³΅μ‘λ O(N log log N)
κ³΅κ° λ³΅μ‘λ O(N) (boolean λ°°μ΄)
νμ© μμ μμ νλ³, λ²μ λ΄ μμ ꡬνκΈ°, λ°±μ€ 1929λ² λ±