
μμλ 1κ³Ό μκΈ° μμ λ§μ μ½μλ‘ κ°μ§λ μλ‘ μΌλ°μ μΌλ‘ μλ μ½λμ κ°μ΄ μμλ₯Ό μ°Ύμ μ μλ€.
const isPrimeNumber = (n) => {
for (let i = 2; i < n; i++) {
if (n % i === 0) return false;
}
return true;
};
μμ λ°©λ²μ μ μ©νλ€λ©΄ μμ νλ³ μκ³ λ¦¬μ¦μ μκ°λ³΅μ‘λλ O(n)μ΄ λλ€. 2λΆν° NκΉμ§ λ°λ³΅νλ©΄μ λλμ΄ λ¨μ΄μ§λμ§ μλμ§ νμΈν΄μΌ νκΈ° λλ¬Έμ΄λ€.
μ½μμ νΉμ§μ νμ©νμ¬ μμλ₯Ό λ ν¨μ¨μ μΈ λ°©λ²μΌλ‘ μ°Ύμ μ μλ€.
λ§μ½ nμ΄ μμκ° μλλΌλ©΄ μ½μλ₯Ό κ°μ§ν
λ° μ΄λ μ½μλ n = a * b (aμ bλ nμ μ½μ)λ‘ ννν μ μλ€. μ΄λ a λ b λμ€ νλλ 무쑰건 μ κ³±κ·Όλ³΄λ€ μμ μμ¬μΌ νλ€.
μ¦ nμ΄ μμκ° μλλΌλ©΄ βnκΉμ§ μ½μκ° λ°λμ νλ μ΄μ μμ΄μΌ νλ€λ κ²μ΄κΈ° λλ¬Έμ μμμ νλ³μ μ κ³±κ·ΌκΉμ§λ§ νλ©΄ λλ€.
const isPrimeNumber = (n) => {
for (let i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) return false;
}
return true;
};
μμ λ°©λ²μ μ μ©νλ€λ©΄ μμ νλ³ μκ³ λ¦¬μ¦μ μκ°λ³΅μ‘λλ O(βn)μ΄ λλ€.

- 2λΆν° μμλ₯Ό ꡬνκ³ μ νλ ꡬκ°μ λͺ¨λ μλ₯Ό λμ΄νλ€.
- νμμΌλ‘ μμΉ λ μλ μμμΈμ§ μλμ§ νλ³νμ§ μμ μμ΄λ€. νμ μ μ€ κ°μ₯ μμ 2λΆν° νλ³μ μμνλ€.
- μκΈ° μμ μ μ μΈν 2μ λ°°μλ₯Ό λͺ¨λ μ§μ΄λ€. (μ°ν λΉ¨κ°μ)
- λ¨μ νμ μ μ€ κ°μ₯ μμ μλ 3μ΄λ―λ‘ μκΈ° μμ μ μ μΈν 3μ λ°°μλ₯Ό λͺ¨λ μ§μ΄λ€. (μ°ν μ΄λ‘μ)
- λ¨μ νμ μ μ€ κ°μ₯ μμ μλ 5μ΄λ―λ‘ μκΈ° μμ μ μ μΈν 3μ λ°°μλ₯Ό λͺ¨λ μ§μ΄λ€. (μ°ν νλμ)
- λ¨μ νμ μ μ€ κ°μ₯ μμ μλ 7μ΄λ―λ‘ μκΈ° μμ μ μ μΈν 3μ λ°°μλ₯Ό λͺ¨λ μ§μ΄λ€. (μ°ν λ Έλμ)
- ꡬνκ³ μ νλ ꡬκ°μ μ κ³±κ·ΌκΉμ§ ν΄λΉ λ‘μ§μ λ°λ³΅ν΄μ€λ€.
μ μμμμλ ꡬνκ³ μ νλ ꡬκ°(n)μ ν¬κΈ°κ° 120μ΄κΈ° λλ¬Έμnμ μ κ³±κ·ΌμΈ 11κΉμ§λ§ μμ κ³Όμ μ λ°λ³΅ν΄μ€λ μΆ©λΆνλ€.
const n = 120;
const primeNumber = Array.from({ length: n + 1 }).fill(true);
for (let i = 2; i <= Math.sqrt(n); i++) {
// iκ° μμμΈ κ²½μ°
if (primeNumber[i]) {
for (let j = i * 2; j <= n; j = j + i) {
primeNumber[j] = false;
}
}
}
for (let i = 2; i <= n; i++) {
if (primeNumber[i]) console.log(i);
}