지난 풀이 참고
1 을 제외하고 2 부터 n까지의 수를 빈 배열 numbers 에 넣는다.n이 소수가 아니라면 1혹은 n 이 아닌 임의의 수 a와 b의 합성수이다. n 의 제곱근까지만 순회하는 루프를 만든다.numbers 배열에 존재하는 수num 의 제곱을 구한다.num의 제곱에서 num을 더한 수 j를 구한다.numbers[j-1] 을 삭제한다.n 미만의 모든 합성수를 지울 수 있다.function solution(n) {
let answer = 0;
let numbers = [];
for(let i = 1; i <= n; i++) {
numbers.push(i);
}
for(let i = 1; i*i < n; i++) {
if(numbers[i]) {
let num = numbers[i];
for(let j = num*num; j <= n; j += num) {
numbers[j-1] = 0;
}
}
}
numbers = numbers.filter((el) => {
if(el) return el;
})
numbers.shift();
answer = numbers.length;
return answer;
}