문제설명
두 숫자를 입력받고 그 사이의 소수를 출력하는 문제입니다.
작동 순서
1. 두 숫자를 입력받습니다.
2. 2부터 마지막숫자까지 True로 지정해줍니다.
3. 2부터 시작해서 True인 자릿수의 배수인 자릿수의 값을 False로 지정합니다.
4. 반복문이 끝나면 값이 True인 자릿수를 출력합니다.
소스코드
import sys
M, N = map(int, sys.stdin.readline().split())
prime = [False, False]+[True]*(N-1)
for i in range(2, N):
if prime[i]:
j = 2
while i*j <= N:
prime[i*j] = False
j += 1
for i in range(M, N+1):
if prime[i]:
print(i)
후기
에라토스테네스의 체를 활용하는 문제인데 아직 에라토스테네스의 체를 정확하지 이해하지 못 한것 같습니다. 알고리즘을 배우기 위해서는 수학도 매우 중요한 것 같다는 생각이 듭니다.