-
[백준 1929번] 소수 구하기Coding Test/백준 2021. 3. 4. 23:43
# 문제
내 풀이
m, n = map(int, input().split()) # 처음엔 모든 수를 소수(True)인 것으로 초기화(0, 1은 제외) array = [True for i in range(n + 1)] # 에라토스테네스의 체 알고리즘 수행 # 2부터 n의 제곱근까지의 모든 수를 확인하며 for i in range(2, int(n ** 0.5) + 1): if array[i] == True: # i를 제외한 i의 모든 배수를 지우기 j = 2 while i * j <= n: array[i * j] = False j += 1 # m이상 n이하 소수 출력 for i in range(m, n + 1): if i > 1 and array[i]: print(i)
생각해볼 점
마지막 출력에서 1을 거르는 조건을 생각하지 못해 오래 걸렸다. 예외 케이스를 항상 염두하자.
'Coding Test > 백준' 카테고리의 다른 글
[백준 3273] 두 수의 합 (0) 2021.03.10 [백준 4948번] 베르트랑 공준 (0) 2021.03.06 [백준 1018번] 체스판 다시 칠하기 (0) 2021.02.28 [백준 2887번] 행성 터널 (0) 2021.02.26 [백준 1978번] 소수 찾기 (0) 2021.02.25