에라토스테네스의 체를 이용해 최대 범위에 해당하는 모든 소수를 구해 놓은 후 이 소수들의 집합에서 N보다 크거나 같으면서 팰린드롬 수인 것을 찾아내면 되는 문제이다.
팰린드롬 수를 판별할때 숫자의 값이 리스트 형태로 적절하게 변환이 가능하다는 점을 이용하여 투포인터를 이용하여 비교과정을 거치면된다.
# 소수 & 팰린드롬
import math
N = int(input())
arr = [0] * (10000001)
for i in range(2, len(arr)):
arr[i] = i
for i in range(2, int(math.sqrt(len(arr)) + 1)):
if arr[i] == 0:
continue
for j in range(i+i, len(arr), i):
arr[j] = 0
def isPalindrome(num):
number = list(str(num))
start = 0
end = len(number) - 1
while start < end:
if number[start] != number[end]:
return False
start += 1
end -= 1
return True
idx = N
while True:
if arr[idx] != 0 and isPalindrome(arr[idx]):
print(arr[idx])
break
idx += 1