리스트의 인덱스로 수를 표현하는 방법과 이중 for문을 사용해서 문제를 해결하고 싶었으나, 예상한 대로 시간초과가 발생했다.
import sys
M,N=map(int,sys.stdin.readline().split())
num_list=[0]*(N-M+1)
for i in range(M,N):
for j in range(2,i):
if i%j==0:
num_list[i-M]+=1
for i in range(M,N):
if num_list[i-M]==0:
print(i)
n=1000
a = [False,False] + [True]*(n-1)
primes=[]
n+1
for i in range(2,n+1):
if a[i]:
primes.append(i)
for j in range(2*i, n+1, i):
a[j] = False
print(primes)
위 방법으로 백준 #1929 소수 구하기를 해결할 수 있다. 파이썬 코드는 다음과 같다.
import sys, math
M,N=map(int,sys.stdin.readline().split())
num_list=[False,False]+[True]*(N-1)
primes=[]
for i in range(2,N+1):
if num_list[i]:
primes.append(i)
for j in range(2*i,N+1,i):
num_list[j]=False
for i in primes:
if i>=M:
print(i)