소수 - 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수
에라토스테네스의 체는 소수를 판별하는 알고리즘으로 1을 제외하고 2부터 N까지 자신을 제외하고 자신의 배수들을 지워하면서 소수들만 남기는 원리
ex) N = 25 일 경우
2 3
45678910111213141516171819202122232425
2 3 5 7
911 131517 192123
2 3
57 11 13 17 19 23
* √n까지만 검사해도 결과는 같음. √25 = 5
function prime_list(n){
//에라토스테네스의 체 초기화: n개 요소에 True 설정(소수로 간주)
let sieve = []
for(let i = 2; i < n; i++){
sieve.push(true);
}
//n의 최대 약수가 sqrt(n) 이하이므로 i=sqrt(n)까지 검사
let m = parseInt(n ** 0.5, 10);
for(let i = 2; i <= m; i++){
if (sieve[i] == true){ // i가 소수인 경우
for(let j = i+i; j < n; j+=i){ // i이후 i의 배수들을 False 판정
sieve[j] = false;
}
}
}
// 소수 목록 산출
let prime = [];
for(let i = 2; i < n; i++){
if (sieve[i] == true){
prime.push(i);
}
}
return prime;
}요