algorithm,

알고리즘 풀이

FreeVue FreeVue Follow Apr 26, 2019 · 1 min read
알고리즘 풀이
Share this

문제

n번째 소수를 구하시오.

input: n = 3
ouput: 5

input: n = 6
ouput: 13

풀이

const output = (input) => {
  let out = 2,
    count = 1 // 소수와 소수의 순서를 담을 변수 선언

  // 소수를 확인할 함수 선언
  const isPrime = (num) => {
    let i = 2 // 소수를 확인 하기 위한 자연수를 담을 변수 선언

    // 자연수 i가 확인할 매개변수 num보다 작으면 반복
    while (i < num) {
      // 나누어 지는 자연수가 있으면 false를 return하여 반복문을 종료합니다.
      if (!(num % i)) return false

      // i에 1씩 더하며 체크합니다.
      i++
    }

    // 반복문이 정상적으로 종료되면 true를 반환합니다.
    return true
  }

  // 소수의 순서가 input보다 작으면 반복
  while (count < input) {
    // 소수를 담은 out을 1씩 더해서 확인합니다.
    out++

    // out이 소수가 되면 count를 1씩 더합니다.
    if (isPrime(out)) count++
  }

  // out을 출력
  return out
}

output(3) // 5
output(6) // 13
output(100) // 541
output(10001) // 104743

구조

결과 이미지 1

[출처: http://euler.synap.co.kr/prob_detail.php?id=7]