소수 찾기
Solution
function solution(n) {
const answer = new Set();
for (let i = 2, num = i * i; num < n; i++, num = i * i) {
if (!answer.has(i)) {
for (let l = num; l <= n; l += i) {
answer.add(l);
}
}
}
return n - (answer.size + 1);
}
Review
아리스토텔레스의 체
간단하게 1~100까지 숫자 중 소수를 찾는 가정
note
- 1 ~ 100 중에서 1 (소수, 합성수도 아닌 유일한 자연수 제거)
- 2(소수)를 제외한 2의 배수 제거
- 3(소수)를 제외한 3의 배수 제거
- 4는 1번에서 이미 지웠기에 5로 건너뛴다.
- 5(소수)를 제외한 5의 배수 제거
- 6는 1번에서 이미 지웠기에 5로 건너뛴다.
- 7(소수)를 제외한 7의 배수 제거
- 8, 9 이미 위에서 지웠기에 건너뛴다.
- 10 이상은 루트 100 했을 때 이미 그 이상의 숫자이기에 제외한다.
- 남은 숫자는 전부 소수이다.