- 우선 에라토스테네스의 체를 사용하여 입력의 최대인 1000000보다 10배큰 사이즈의 배열을 생성한 후 소수를 구한다.
- 반복문을 사용하여 구해진 소수가 펠린드롬 수인지 확인한다.
- 이는 투 포인터 느낌으로 갔다.
n=int(input())
n_list=[0, 0] + [0]*(10000000)
primes=[]
for i in range(2, 10000001):
if n_list[i]==0:
n_list[i]=1
primes.append(i)
for j in range(i*2, 10000001, i):
n_list[j]=1
for i in primes:
if i>=n:
temp=list(str(i))
a=0
b=len(temp)-1
while a<=b:
if temp[a]!=temp[b]:
break
else:
a+=1
b-=1
else:
print(i)
break
- 위의 코드가 실행시간이 굉장히 길어 수정을 진행하였다.
- 에라토스테네스의 체에서 소수를 구할 때 수를 너무 크게 설정하였다. 그래서 이를 줄였다.
- 투 포인터 보다 파이썬에 맞게 리스트를 거꾸로 만들어서 이를 비교하였다.
n=int(input())
n_list=[0, 0] + [0]*(1005000)
primes=[]
for i in range(2, 1005000):
if n_list[i]==0:
n_list[i]=1
primes.append(i)
for j in range(i*2, 1005000, i):
n_list[j]=1
for i in primes:
if i>=n:
temp=list(str(i))
if temp==temp[::-1]:
print(i)
break