https://www.acmicpc.net/problem/4948
#Solution
에라토스테네스의 체를 이용하여 소수를 구해준 다음, 맞는 소수의 개수를 출력하는 방법이 가장 빠르다.
import sys
#소수리스트 만들어주기
prime_ox = [True for _ in range(123457 * 2)]
for i in range(2, int((123457 * 2) ** 0.5)):
if prime_ox[i] == True:
for j in range(i+i, 123457 * 2, i):
prime_ox[j] = False
prime_list = [i for i, j in enumerate(prime_ox) if j == True and i >=2 ]
#소수 출력하기
num = int(sys.stdin.readline())
while num != 0:
answer = 0
for i in prime_list:
if i <= num :
continue
elif num * 2 >= i > num:
answer += 1
else:
break
print(answer)
num = int(sys.stdin.readline())
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#152 백준 파이썬 [1929] 소수 구하기 (0) | 2019.10.25 |
---|---|
#151 백준 파이썬 [9020] 골드바흐의 추측 (0) | 2019.10.25 |
#149 백준 파이썬 [5430] AC - 덱 (0) | 2019.10.24 |
#148 백준 파이썬 [11866] 조세퍼스 문제 0 (0) | 2019.10.24 |
#147 백준 파이썬 [1932] 정수 삼각형 (0) | 2019.10.24 |