Study/Coding Test

[JS] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - μ†Œμˆ˜ μ°ΎκΈ° (μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체 μ•Œκ³ λ¦¬μ¦˜)

Jieunny 2023. 1. 25. 10:06

πŸ“Œ  문제

1λΆ€ν„° μž…λ ₯받은 숫자 n 사이에 μžˆλŠ” μ†Œμˆ˜μ˜ 개수λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜, solution을 λ§Œλ“€μ–΄ λ³΄μ„Έμš”.

μ†Œμˆ˜λŠ” 1κ³Ό 자기 μžμ‹ μœΌλ‘œλ§Œ λ‚˜λˆ„μ–΄μ§€λŠ” 수λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.
(1은 μ†Œμˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.)

 

✏️  풀이

πŸ“£  μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체

βœ”οΈ μ†Œμˆ˜λ₯Ό νŒλ³„ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ (λŒ€λŸ‰μœΌλ‘œ λΉ λ₯΄κ³  μ •ν™•ν•˜κ²Œ)

βœ”οΈ μ†Œμˆ˜λ₯Ό νŒλ³„ν•  수만큼 배열을 ν• λ‹Ήν•˜κ³ , ν•˜λ‚˜μ”© μ§€μ›Œκ°€λŠ” 방법

     βž° 2λΆ€ν„° μ‹œμž‘ν•΄μ„œ νŠΉμ • 수의 λ°°μˆ˜μ— ν•΄λ‹Ήν•˜λŠ” 수λ₯Ό λͺ¨λ‘ μ§€μš΄λ‹€.

     ➰ μ§€μšΈ λ•Œ, 자기 μžμ‹ μ€ μ§€μš°μ§€ μ•Šκ³  이미 μ§€μ›Œμ§„ μˆ˜λŠ” κ±΄λ„ˆλ›΄λ‹€.

     ➰ 2λΆ€ν„° μ‹œμž‘ν•΄μ„œ 남아 μžˆλŠ” 수λ₯Ό 좜λ ₯ν•œλ‹€.

 

πŸ“£  μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체 κ΅¬ν˜„ μ½”λ“œ

function prime(n) {
  let answer = 0;
  let arr = [];
  
  for(let i=2; i<=n; i++){  // λ°°μ—΄ μ΄ˆκΈ°ν™” ν•˜κΈ°
    arr[i] = i
  }

  for(let i=2; i<=n; i++){  // 2λΆ€ν„° λŒλ©΄μ„œ 
    if(arr[i] === 0){ // 이미 μ§€μ›Œμ§„ 수라면 κ±΄λ„ˆλ›°κ³ 
      continue;
    }
    else{
      for(let j= 2*i; j<=n; j+=i){  // μ•ˆμ§€μ›Œμ§„ 수라면 κ·Έ 수의 λ°°μˆ˜λΆ€ν„° μ‹œμž‘ν•΄μ„œ λͺ¨λ“  배수 μ§€μš°κΈ°
        arr[j] = 0;
      }
    }
  }

  for(let i=2; i<=n; i++){
    if(arr[i] !== 0){
      answer++;
    }
  }

  return answer;
}