Math_16_소수&팰린드롬(1747)

Math16소수&팰린드롬(1747)

문제

어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다.

어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다.

출력

첫째 줄에 조건을 만족하는 수를 출력한다.

풀이

  • 먼저 while 문을 이용해 N이 소수인지 아닌지 판별할 것이고
  • 아니라면 N+1, 맞다면 팰린드드롬 수인지 확인한다

코드

import sys
sys.stdin = open("input.txt","rt")
import math
def input():
    return sys.stdin.readline().rstrip()

def isPrime(x):
    for i in range(2, int(math.sqrt(x)+1)):
        if x % i == 0:
            return False
    return True

def isPalindrome(x):
    strX = str(x)
    for j in range(len(strX)//2):
        if strX[j] != strX[-j -1]:
            return False
    else:
        return True


if __name__ == "__main__":
    N = int(input())
    if N == 1:
        N = N+1
    while(True):
        if isPrime(N):
            if isPalindrome(N):
                break
        N = N+1
    print(N)

배운 것

팰린드드롬 수라는게 있구나

코멘트

주의해야 했던 것이 n이 1일 경우이다. 이걸 생각 안해서 2차 시도 까지 틀림..

좋은 웹페이지 즐겨찾기