def is_prime(n):
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
while True:
n = int(input())
if n == 0:
break
primes_n_to_2n = []
for i in range(n+1,2*n + 1):
if is_prime(i):
primes_n_to_2n.append(i)
print(len(primes_n_to_2n))
위 문제는 푸는 방법은 다음과 같다.
1. n보다 크고 2n 보다 작거나 같은 수까지 소수를 배열에 삽입한다.
2. 답은 배열의 길이로 출력한다.
소수인지 아닌지 판단하는 is_prime 함수 설명 [백준/Python] 4134 다음 소수
정답이 맞다고 생각했는데, 아니였다. 이유는 문제의 조건을 제대로 확인하지 않았기 때문에 틀린 것이다.