에라토스테네스의 체

Jaewoong2·2020년 8월 18일
0

알고리즘공부

목록 보기
6/35

https://namu.wiki/w/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98%20%EC%B2%B4

// 에라토스테네스의 체

const number = 100; // 범위의 수
const sqrtNumber = 100 ** 0.5; // 범위의 제곱근
const arr = Array(number).fill().map((num, index) => index > 1 ? index : false); 
// 0, 1 은 소수가 아니므로 false 아니면 일단 배열에 숫자를 넣는다.
for(let i = 2; i < sqrtNumber; i++) {
  // 찾고자하는 수의 제곱근보다 작은 수 들,
    if(arr[i]) {
     // 2부터 지워나가면 2~10 중에 소수만 남는다 
        for(let j = i * i; j < number; j = j + i) {
            arr[j] = false;
     //해당 하는 소수가 존재 하면, 그 해당 소수의 배수 들은 모두 fasle 처리해준다.
        }
    }
}
console.log(arr.filter(v => !!v))

// 구하고자하는 범위의 수의 제곱근 보다 작은 수중에서 
// 소수들의 배를 제외시키면
// 그 범위 내의 소수들을 구할 수 있다.
profile
DFF (Development For Fun)

0개의 댓글