μ΄ λ¬Έμ λ λ§λ€ μ μλ μ«μ μ°ΎκΈ°, μμ νλ³νκΈ° μ΄λ κ² 2κ°μ§ λ¬Έμ λ₯Ό ν΄κ²°νλ κ²μΌλ‘ λ³Ό μ μλ€.
λ§λ€ μ μλ μ«μμ κ²½μ°λ₯Ό μ°Ύλ κ²μ μ¬κ·λ₯Ό μ΄μ©ν μμ νμμΌλ‘ νλ©΄ λλ€.
μμ νλ³μ μ²μμ μλΌν μ€ν
λ€μ€μ 체λ₯Ό μ΄μ©ν΄ ꡬννλ €κ³ νμΌλ,
numbers
κ° κΈΈμ΄ 1 μ΄μ 7 μ΄νμΈ λ¬Έμμ΄μ΄λ―λ‘ μ°μ° νμκ° λ무 λμ΄λλ λ¬Έμ κ° μκ²Όλ€.
λ¨μν for
λ¬Έμ λλ©° mod μ°μ°μΌλ‘ νλ©΄ O(n)μ μκ° λ³΅μ‘λλ‘ ν μ μλλ° λ§μ΄λ€.
μλΌν μ€ν
λ€μ€μ 체λ μμ νλ³ν μλ€μ λ²μκ° λ무 ν¬μ§ μκ³ ,
λλμ μμλ€μ ν λ²μ νλ³ν΄μΌ ν λ¬Έμ μμ μ°λ κ²μ΄ μ’μ κ² κ°λ€.
λ¨μν μμ νλ³ μκ³ λ¦¬μ¦λ μκ° λ³΅μ‘λλ₯Ό O(n)μμ O(n^(1/2))μΌλ‘ μ€μΌ μ μλ€. μλ₯Ό λ€μ΄, 8μ κ²½μ° 2 * 4 = 4 * 2μ κ°μ μμΌλ‘ λμΉμ μ΄λ£¨κΈ° λλ¬Έμ ꡬνκ³ μ νλ μ«μμ μ κ³±κ·ΌκΉμ§λ§ μ½μμ μ¬λΆλ₯Ό κ²μ¦νλ©΄ λκ² λ€. μ½λλ λ€μκ³Ό κ°λ€.
boolean isPrime(int n) {
if (n == 0 || n == 1) return false;
int end = (int) Math.sqrt(n);
for (int i = 2; i <= end; i++) {
if (n % i == 0) return false;
}
return true;
}