import sys
input=sys.stdin.readline
while True:
n=int(input())
if n==0:
break
cnt=0
for i in range(n+1,n*2+1):
if i==1:
continue
elif i==2:
cnt+=1
continue
else:
for j in range(2,int(i**(1/2))+1):
if i%j==0:
break
else:
cnt+=1
print(cnt)
일반적으로 소수 구하는 것처럼 문제를 접근했더니 시간초과라는 결과가 나왔다.
import sys
input=sys.stdin.readline
sosu=[]
for i in range(2,246913):
cnt=0
for j in range(2,int(i**(1/2))+1):
if i%j==0:
cnt+=1
break
if cnt==0:
sosu.append(i)
while True:
n=int(input())
re=0
if n==0:
break
for k in sosu:
if n<k and k<=n*2:
re+=1
print(re)
접근 방식