# 소수인지 아닌지 판별하는 함수
def sosu(x):
if x==1:
return False
for i in range(2,int(x**0.5)+1):
if x%i==0:
return False
return True
# 2부터 246911까지의 숫자 중 소수인 수를 memo에 담기
all_list = list(range(2,246913))
memo = []
for i in all_list:
if sosu(i):
memo.append(i)
# 위에서 구한 memo(소수리스트)에
# n보다 크고 2n보다 작거나 같은 수가 있다면 count 늘리기
while True:
n = int(input())
count=0
if n==0:
break
for i in memo:
if n<i<2*n+1:
count+=1
print(count)
# 소수인지 아닌지 판별하는 함수
def sosu(x):
if x==1:
return False
for i in range(2,int(x**0.5)+1):
if x%i==0:
return False
return True
먼저 소수를 판별하는 함수이다.
1978, 2581, 1929번 문제를 풀었다면 이해할 것이므로 설명 생략
all_list = list(range(2,246913))
memo = []
for i in all_list:
if sosu(i):
memo.append(i)
all_list 에 2부터 246911까지의 숫자를 넣는다.
왜냐하면 1<=n<=123456 라는 제한이 있기 때문이다.
찾아야 하는 소수는 n보다 크고 2n보다 작거나 같아야 하므로,
range(2, 246913) 이다.
all_list의 있는 값이 소수라면 memo에 추가한다.
# 위에서 구한 memo(소수리스트)에
# n보다 크고 2n보다 작거나 같은 수가 있다면 count 늘리기
while True:
n = int(input())
count=0
if n==0:
break
for i in memo:
if n<i<2*n+1:
count+=1
print(count)
n이 0이라면 while문을 나가고
n이 0이 아니면 memo에 있는 소수들 중에서
n<i<2*n+1 를 만족하면 count +=1을 해준다.