문제설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
제한 조건
n은 2이상 1000000이하의 자연수입니다.
입출력 예
function solution(n) {
let answer = 0;
let isPrime = true;
// 1부터 n 사이에서 소수를 찾아야 하기 때문에 i는 2부터 시작해서 n보다 작거나 같을 때까지
for(let i = 2; i <= n; i++) {
// 본격적으로 소수 찾기를 위한 for문.
// i의 제곱근보다 작거나 같을 때까지 j를 2부터 올려주면서
for(let j = 2; j <= Math.floor(Math.sqrt(i)); j++) {
// i를 j로 나누어지면 isPrime변수를 false로 바꾸어준다.
if(i % j === 0) {
isPrime = false;
break;
}
}
// 소수인지 아닌지 확인하는 for문을 다 돌았을 때 isPrime이 true이면
// 소수이므로 answer++를 해준다.
if(isPrime === true) {
answer++;
}
// isPrime이 false로 바뀐 경우도 있기 때문에 다시 true로 초기화 해준다.
isPrime = true;
}
return answer;
}