728x90
m, n = map(int, input().split())
#m, n = 3, 16
prime=[False,False,]+[True]*(n-1)
for i in range(2,n+1):
if prime[i]:
for j in range(2*i,n+1,i):
prime[j] = False
if i >= m:
print(i)
에라토스테네스의 체를 사용한 문제이다.
체를 사용하여 소수를 구하면서 범위 안에 있는 경우에만 출력하는 코드이다.
타인의 코드를 보니 에라토스테네스의 체로 소수를 구할때 제곱근 범위까지만 구하고 소수에 대해서 출력하는 것도 있었다.
오히려 그렇게했을때 연산이 줄어드니 더 나은것같다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 9020 골드바흐의 추측 (0) | 2021.02.12 |
---|---|
[백준] 4948 베르트랑 공준 (0) | 2021.02.12 |
[백준] 11653 소인수분해 (0) | 2021.02.12 |
[백준] 11659 구간 합 구하기 4 (0) | 2021.02.11 |
[백준] 1244 스위치 켜고 끄기 (0) | 2021.02.10 |