STUDY/Algorithm

[백준] 1929 소수구하기

sinawi95 2021. 2. 12. 12:22
728x90

www.acmicpc.net/problem/1929

 

1929번: 소수 구하기

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

www.acmicpc.net

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