[백준]1990 소수인팰린드롬 (파이썬)

Jihun·2022년 3월 11일
0

BOJ

목록 보기
16/29
post-thumbnail
post-custom-banner

문제

151은 소수이면서 동시에 팰린드롬이기 때문에 소수인 팰린드롬이다. 팰린드롬이란 앞으로 읽어나 뒤로 읽으나 같은 수를 말한다. 예를 들어 1234는 앞으로 읽으면 1234지만, 뒤로 읽으면 4321이 되고 이 두 수가 다르기 때문에 팰린드롬이 아니다. 두 정수 a, b가 주어졌을 때, a이상 b이하인 소수인 팰린드롬을 모두 구하는 프로그램을 작성하시오.

입력

입력은 첫째 줄에 공백으로 구분된 두 자연수 a, b가 주어진다. 단 5 ≤ a < b ≤ 100,000,000 이다.

출력

첫째 줄부터 차례로 증가하는 순서대로 한 줄에 한개씩 소수인 팰린드롬을 출력한다. 마지막 줄에는 -1을 출력한다.

입출력 예

5 550

return
5
7
11
101
131
151
181
191
313
353
373
383
-1

풀이

  1. a부터 b까지 팰린드롬수를 구함
    • 10000000이상인 수에선 팰린드롬수이며 소수인 수가 없었음
      -> b의 크기가 10,000,000이상이면 b를 10,000,000로 대체해줌
      -> 이렇게 해서 시간 초과 해결
  2. 1의 결과 중 소수인 것을 print

코드

def isPrime(num):
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            return False
    return True
a,b=map(int,input().split())
#10,000,000이상인 팰린드롬수는 존재 X
if b>10000000 :b=10000000
palindrome=[n for n in range(a,b+1)if str(n)==str(n)[::-1]]        
for n in palindrome:
    if isPrime(n):print(n)
print(-1)
profile
slow and steady
post-custom-banner

0개의 댓글