https://www.acmicpc.net/problem/1929
n, m = map(int, input().split()) # 두 개의 자연수
arr = [True] * (m + 1) # True은 소수라는 뜻
arr[0] = arr[1] = False # False은 소수가 아님
# for i in range(2, int((m + 1) ** 0.5)):
# 최고 숫자의 루트로 계산해도 되긴 함
for i in range(2, m + 1):
# 2부터 최고 숫자까지 에라토스테네스의 체를 계산함
if arr[i]:
for j in range(i * 2, m + 1, i):
# i의 배수들을 모두 False 처리함
arr[j] = False
for i in range(n, m + 1):
if arr[i]:
print(i)
참고로 루트로 계산해도 됨
'Computer Science > 알고리즘' 카테고리의 다른 글
[알고리즘 - C++, Python] SWEA 8016 홀수 피라미드 (0) | 2022.06.10 |
---|---|
[알고리즘 - Python] BOJ 16563 (0) | 2022.06.10 |
[알고리즘 - Python] BOJ 1978 (0) | 2022.06.10 |
[알고리즘 - Python] BOJ 1037 (0) | 2022.06.10 |
[알고리즘 - 이론] 0-1 KnapSack Problem and Fractional KnapSack Problem (0-1 배낭 문제, 분할 가능한 배낭 문제) (2) | 2022.06.09 |