일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Python
- 문자열
- algorithm
- spring security
- API
- Spring
- 탐욕법
- 백준
- 소수
- 최단경로
- 2981
- 알고리즘
- 프로그래머스
- brute force
- javascript
- java
- 라이브템플릿
- 파이썬
- counting elements
- codility
- HTTP
- BFS
- springboot
- 코딩테스트
- applicationeventpublisher
- beandefinitionstoreexception
- 2018 KAKAO BLIND RECRUITMENT
- Greedy
- Dijkstra
- error
Archives
- Today
- Total
Altiora Petamus
소수 구하기 (에라토스테네스의 체) 본문
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
🤔생각해보기
문제는 간단하다. 에라토스테네스의 체를 사용해서 풀면 된다.
개인적으로 소수 구하는 문제에서 자주 쓰는 방법은 제곱근까지만 약수의 여부를 검증해서 O(logN)의 시간 복잡도로 구하는 것이다.
에라토스테네스의 체는 다량의 소수를 한 번에 판별할 때 쓰면 좋은 방식으로 자세한 내용은 다음을 참고하자.
위키독스
온라인 책을 제작 공유하는 플랫폼 서비스
wikidocs.net
m, n = map(int, input().split())
a = [False, False] + [True] * (n - 1)
prime = []
for i in range(2, n + 1):
if a[i]:
prime.append(i)
# range의 3번째 인자 i는 i만큼 건너뛰면서 루프를 진행하게 한다.
for j in range(2 * i, n + 1, i):
a[j] = False
for num in prime:
if num >= m:
print(num)
'1day-1algorithm' 카테고리의 다른 글
통계학 (0) | 2021.06.22 |
---|---|
토마토 (0) | 2021.06.19 |
Odd Occurrences In Array (0) | 2021.06.18 |
터렛 (0) | 2021.06.17 |
네 번째 점 (0) | 2021.06.16 |