[μλΌν μ€ν λ€μ€μ 체]μμμ°ΎκΈ°
λ¬Έμ
λ¬Έμ μ€λͺ
1λΆν° μ λ ₯λ°μ μ«μ n μ¬μ΄μ μλ μμμ κ°μλ₯Ό λ°ννλ ν¨μ, solutionμ λ§λ€μ΄ 보μΈμ.
μμλ 1κ³Ό μκΈ° μμ μΌλ‘λ§ λλμ΄μ§λ μλ₯Ό μλ―Έν©λλ€.
(1μ μμκ° μλλλ€.)
μ ν 쑰건
- nμ 2μ΄μ 1000000μ΄νμ μμ°μμ λλ€.
μ μΆλ ₯ μ
nresult
10 | 4 |
5 | 3 |
μ μΆλ ₯ μ μ€λͺ
μ
μΆλ ₯ μ #1
1λΆν° 10 μ¬μ΄μ μμλ [2,3,5,7] 4κ°κ° μ‘΄μ¬νλ―λ‘ 4λ₯Ό λ°ν
μ
μΆλ ₯ μ #2
1λΆν° 5 μ¬μ΄μ μμλ [2,3,5] 3κ°κ° μ‘΄μ¬νλ―λ‘ 3λ₯Ό λ°ν
λ¬Έμ νμ΄
λ€μ§μ μμ
λ¬Έμ Nκ°μ μμ°μκ° μ λ ₯λλ©΄ κ° μμ°μλ₯Ό λ€μ§μ ν κ·Έ λ€μ§μ μκ° μμμ΄λ©΄ κ·Έ μμλ₯Ό μΆλ ₯νκ³ μ νλ€. μλ₯Ό λ€μ΄ 32λ₯Ό λ€μ§μΌλ©΄ 23μ΄κ³ , 23μ μμμ΄λ€. κ·Έλ¬λ©΄ 23μ μΆλ ₯νλ€.(첫 μ리λΆν°μ
choi95.tistory.com
μμλ₯Ό μ°Ύλ μ°μ°μ μΌμ μ νμλ λ€μ§μ μμ λ¬Έμ μ κ°μλ€.
μ½λ
function isPrime(n) {
for(let i = 2; i <= Math.sqrt(n); i++) {
if(n % i === 0) return false;
}
return true;
}
function solution(n) {
var answer = 0;
for(let i = 2; i <= n; i++) {
if(isPrime(i)) answer++;
}
return answer;
}
μ€λ΅
μ νλ ν μ€νΈλ λͺ¨λ λ€ λ§μ³€μΌλ ν¨μ¨μ± ν μ€νΈμμ μκ° μ΄κ³Όλ‘ μ€λ΅μΌλ‘ μ²λ¦¬λμλ€.
ꡬκΈλ§ν΄λ³Έ κ²°κ³Ό μλΌν μ€ν λ€μ€μ 체λ₯Ό μ¬μ©νμ¬ μκ° λ³΅μ‘λλ₯Ό μ€μ¬μΌλ§ ν¨μ¨μ± ν μ€νΈλ₯Ό ν΅κ³Όν μ μλ λ¬Έμ μλ€.
μλΌν μ€λ€μ€μ 체
- μ£Όμ΄μ§ μ«μ κ°μ λ²μ μμμ, μκΈ° μμ μ μ μΈν λ°°μ κ°μ μμ
- μ μ°μ° κ³Όμ ν μμλ§ λ¨κ² λ¨
- μ λ ₯ λ°μ μ«μκΉμ§μ μ μ μ€ μμμ κ°μλ₯Ό ꡬν΄μΌ ν κ²½μ°μ μ©μ΄
μ½λ
let solution = (n) => {
let arr = Array(n+1).fill(1).fill(0, 0, 2); //μμμ μ‘°κ±΄μ΄ μλ 0κ³Ό 1μ μ¬μ μ false
for(let i=2; i*i<=n; i++){
if(arr[i]){ //μμ λ°°μμ μ°μ° κ³Όμ μμ ꡬν΄μ‘λ€λ©΄
for(let j=i*i; j<=n; j+=i){ //λ°°μ κ³±νκΈ°
arr[j] = 0;
}
}
}
return arr.filter((e, _) => e).length;
}