문제
알고리즘
- 일반적으로 소수를 구하는 방법으로 구하게 되면 시간 복잡도가 O(n^2)이고 에라토스테네스의 체를 통해 구하게 되면 시간 복잡도가 O(log n)이다.
- 따라서 에라토스테네스의 체를 통해 소수를 구한다.
- 구한 소수가 범위 내에 있다면 출력한다.
코드
import sys
m, n = map(int, sys.stdin.readline().split())
dp = [False, False] + [True] * 1000001
primes = []
# 에라토스테네스의 체를 통해 소수를 구한다.
for i in range(2, n+1):
if dp[i]:
primes.append(i)
for j in range(i*2, n+1, i):
dp[j] = False
# 구한 소수가 범위 내에 있다면 출력
for i in primes:
if i > n:
break
if i >= m:
print(i)
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1205번(파이썬): 등수 구하기 (0) | 2022.08.10 |
---|---|
[baekjoon] 백준 1063번(파이썬): 킹 (0) | 2022.08.09 |
[baekjoon] 백준 7568번(파이썬): 덩치 (0) | 2022.07.21 |
[baekjoon] 백준 4673번(파이썬): 셀프 넘버 (0) | 2022.06.28 |
[baekjoon] 백준 1504번(파이썬): 특정한 최단 경로 (0) | 2022.06.27 |