[python] 백준 4948 베르트랑 공준
문제
풀이
import sys
import math
input = sys.stdin.readline
lst = [True for i in range((123456 * 2) + 1)] #리스트는 2n의 최대 범위인 (123456 * 2) 크기가 되야 한다.
result = []
result_out = []
def is_prime_number(n): #에라테네스의 채 사용
lst[0] = False
lst[1] = False #degenerate case 처리
for i in range(2,n+1):
if lst[i] == True:
j = 2
while i * j <= n:
lst[i * j] = False #i의 배수가 되는 lst의 index는 false 처리
j += 1
is_prime_number(123456 * 2)
while True: #입력 값은 0이 입력될 때까지 result 리스트에 담음
a = int(input())
if a == 0:
break
else:
result.append(a)
for i in result: #result의 인자를 계속 꺼냄
cnt = 0
for j in range(i+1,(i *2)+1): #i 이상 i*2이하의 소수가 존재하는지 lst에서 찾음
if lst[j]:
cnt += 1
result_out.append(cnt)
for i in result_out:
print(i)