소수를 구하기 위한 알고리즘으로 에라토스테네스의 체가 있다.
2부터 시작하여 2의 배수들을 지워나가고, 그 다음엔 3의 배수, 그 다음엔 5의 배수 (4는 2의 배수로 이미 소수 후보에서 제외되었다)를 지워가며 소수를 추려내는 방법이다.
const eratos = (n) => {
const arr = new Array(n + 1).fill(true);
arr[0] = false;
arr[1] = false;
for(let i = 2; i <= Math.sqrt(n); i++) {
for(let j = i*i; j <= n; j += i) {
arr[j] = false;
}
}
const answer = [];
for(let i = 2; i <= n; i++) {
if(arr[i]) {
answer.push(i);
}
}
return answer;
}
배수를 확인할 숫자는 n의 제곱근까지만 확인하면 된다.
arr[j]가 false가 아닌 index는 소수이므로, 배수를 제거할 땐 j*j부터 제거한다.
작업이 끝나고, 2 이상이면서 true인 index는 소수이다.
에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 에라토스테네스의 체 수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 알고리즘[편집] 2부터 소수
ko.wikipedia.org
'JavaScript' 카테고리의 다른 글
syntactic sugar in Javascript (Class와 Async Await) (0) | 2023.09.18 |
---|---|
import와 require의 차이 (0) | 2023.09.15 |
cypress & cypress studio 사용하기 (e2e 테스트) (0) | 2023.08.28 |
Drag Event에서 dataTransfer로 데이터 전달하기 (0) | 2023.08.23 |
input 붙여넣기 방지하기 (0) | 2023.08.08 |