일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 재귀함수
- for문
- join
- 배열
- 역행자
- Where
- Algorithms
- array
- JavaScript
- 정규표현식
- 최강의 인생
- array.slice()
- SQL
- Hackerrank
- 개발자_조이킴
- 코딩테스트
- 코딩공부
- 개발자의 책장
- Programmers
- 블록체인
- MySQL
- 자바스크립트
- 프로그래머스
- Developer_JoyKim
- 코드스테이츠
- node.js
- select
- 알고리즘
- 코플릿
- array.push()
Archives
- Today
- Total
CodingSpace
[알고리즘] - 아레토스테네스의 체 (소수 찾기) 본문
에라토스테네스의 체
에라토스테네스의 체는 소수 찾기 알고리즘 중
가장 효율적인 알고리즘이라고 알려진 알고리즘이다.
알고리즘 로직
1. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다.
2. 2는 소수이므로 오른쪽에 2를 쓴다.
3. 자기 자신을 제외한 2의 배수를 모두 지운다.
4. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다.
5. 자기 자신을 제외한 3의 배수를 모두 지운다.
6. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다.
7. 자기 자신을 제외한 5의 배수를 모두 지운다.
8. 남아있는 수 가운데 7은 소수이므로 오른쪽에 7을 쓴다.
9. 자기 자신을 제외한 7의 배수를 모두 지운다.
10. 위의 과정을 반복하면 구하는 구간의 모든 소수가 남는다.
코드 구현
에라토스테네스의 체를 javascript 코드로 구현하면 아래와 같다.
// javascript로 구현
function get_primes(num) {
// 0과 1은 소수가 아니기 때문에 false로 설정
const prime = [false, false, ...Array(num - 1).fill(true)];
for (let i = 2; i * i <= num; i++) {
// i번째 값이 true인 경우
if (prime[i]) {
// i의 배수를 false 값으로 처리
for (let j = i * 2; j <= num; j = j + i) {
prime[j] = false;
}
}
}
// 배열 prime에 true 값만 반환
return prime.filter(Boolean);
}
References.
- 코딩테스트 광탈 방지 A to Z: JavaScript (이선협)
For Developer.
- 잘못되거나 부족한 부분이 있다면 언제든지 댓글 부탁드립니다 :)
'자료구조 및 알고리즘' 카테고리의 다른 글
[자료구조] 큐 (Queue) (0) | 2023.05.23 |
---|---|
[자료구조] 힙 (Heap) (0) | 2023.04.24 |
Comments