티스토리 뷰

 

접근법


소수 시리즈 4탄이다. 어벤저스도 4편이 엔드게임인데 소수도 이제 엔드게임이었으면 좋겠다.

 

이번 문제도 에라토스테네스의 체를 이용하면 쉽게 풀 수 있다.

 

에라토스테네스의 체에 대한 자세한 설명은 이전 포스팅에 있으니 참고바란다. (이전 포스팅)

 

우선 숫자 0이 들어올 때까지 해당 프로그램은 무한루프를 돌아야 한다. 그리고 각 케이스 별로 입력값이 주어지면

 

입력값의 두배에 해당하는 범위까지의 소수의 개수를 찾아야한다.

 

따라서, 이전에 만들어 두었던 프로그램을 활용하면 손쉽게 문제를 풀 수 있다.

 

 

풀이


while True:
    n = int(input())
    N = 2 * n
    if n == 0 :
        break
    else :
        arr = [i for i in range(N+1)]
        arr[1] = 0
        for i in range(2,N+1):
            if arr[i] == 0:
                continue
            for j in range(i*2,N+1,i):
                arr[j] = 0
        prime = [i for i in range(n+1,N+1) if arr[i] == i]
        print(len(prime))

 

 

문제 출처 : 백준

'프로그래밍 > BOJ' 카테고리의 다른 글

백준 #1085: 직사각형에서 탈출  (0) 2020.01.27
백준 #9020: 골드바흐의 추측  (0) 2020.01.26
백준 #1929: 소수 구하기  (0) 2020.01.22
백준 #1978: 소수  (0) 2020.01.22
백준 #1978: 소수 찾기  (0) 2020.01.22
댓글
링크
최근에 올라온 글
Total
Today
Yesterday