Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 부동소수점
- Eratosthenes
- 알고리즘
- 탐욕 알고리즘
- https
- CSSOM
- 분산 네트워크
- 탐욕법
- sieve
- 그리디 알고리즘
- 검색엔진최적화
- deque
- React
- 에라토스테네스
- binary search
- 큐
- await
- mock service worker
- 모킹
- content delivery network
- 구글서치콘솔
- async
- 자료구조
- 고정소수점
- greedy
- 깊이 우선 탐색
- 연결리스트
- 유클리드 호제법
- MVC패턴
- MSW
Archives
- Today
- Total
갱주
에라토스테네스의 체 본문
에라토스테네스의 체?
에라토스테네스의 체(Sieve of Eratosthenes)는 주어진 범위 내에서 모든 소수를 찾는 알고리즘입니다.
이 알고리즘은 소수의 배수를 제거하는 방식으로 동작하며, 시간 복잡도는 O(n log log n)입니다.
(소수란 1과 자기 자신만을 약수로 가지는 수)
알고리즘 설명
- 2부터 n까지의 자연수를 나열합니다.
- 가장 작은 수인 2를 소수로 선택합니다.
- 2를 제외한 2의 배수들을 모두 지웁니다.
- 다음 남은 수 중 가장 작은 수를 소수로 선택하고, 그 수의 배수들을 모두 지웁니다.
- 이 과정을 반복하여 선택된 소수의 배수를 모두 제거합니다.
- 더 이상 지울 배수가 없으면 남아 있는 수들이 모두 소수입니다.
구현 코드
def eratosthenes_sieve(n):
# 0과 1은 소수가 아니므로 False로 설정
sieve = [True] * (n + 1)
sieve[0] = False
sieve[1] = False
# 2부터 sqrt(n)까지의 수들의 배수를 제거
for i in range(2, int(n**0.5) + 1):
if sieve[i]: # i가 소수라면
# i의 배수들을 False로 표시
for j in range(i * i, n + 1, i):
sieve[j] = False
# 소수들만 리스트로 반환
return [i for i in range(2, n + 1) if sieve[i]]
# 사용 예시
n = 50
print(eratosthenes_sieve(n))
# [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
'알고리즘' 카테고리의 다른 글
그리디 알고리즘? (Greedy, 탐욕 알고리즘) (0) | 2024.10.16 |
---|---|
이분탐색 알고리즘 (Binary Search) (0) | 2024.10.15 |
유클리드호제법 (0) | 2024.10.15 |
BFS 알고리즘 (너비 우선 탐색, Breadth-First Search) (3) | 2024.10.14 |
DFS 알고리즘 (깊이 우선 탐색, Depth-First Search) (0) | 2024.10.14 |