반응형
코드
에라토스테네스의 체를 이용하면 간단하게 해결 가능하다.
import math
while True:
n = int(input())
if n == 0:
break
count = 0
check = [True]* (2 * n + 1) # 모든 수가 소수 라고 가정
for i in range(2, int(math.sqrt(2*n) + 1)):
if check[i]:
j = 2
while i * j <= 2*n:
check[i*j] = False
j += 1
for x in range(n+1, 2*n +1):
if check[x]:
count += 1
print(count)
'코딩테스트 > 파이썬' 카테고리의 다른 글
[백준] [DP] 파도반 수열 9461 (파이썬) (0) | 2021.03.14 |
---|---|
[백준] [DP] 신나는 함수 실행 9184 (파이썬) (0) | 2021.03.14 |
[백준] 설탕배달 2839 (파이썬) (0) | 2021.03.12 |
[백준] 수 정렬하기 2 2751 (파이썬) (0) | 2021.03.12 |
[백준] 카드2 2164 (파이썬) (0) | 2021.03.12 |