문제
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
구조
[출처: http://euler.synap.co.kr/prob_detail.php?id=7]