[백준] 1990 : 소수앤팰린드롬

수학

소수앤팰린드롬

a 이상 b 이하의 수를 반복문을 사용해 돌면서
문자열과 뒤집은 문자열이 같고 , 소수이면 출력했다. 그런데 이 방법을 이용하면 시간초과가 난다, 여기서 하나 더 추가해야 할 것은
문자열의 길이가 짝수이면 11 말고는 모두 소수가 될 수 없다 .
그래서 이 조건을 추가해주면 된다

import sys
import math
input= sys.stdin.readline
a, b = map(int, input().split())
# 소수찾기
def find_prime(x):
	if x == 0 or x == 1:
		return False
	for i in range(2, int(math.sqrt(x))+1):
		if x % i == 0:
			return False
	return True

for i in range(a, b+1):
 	# 11은 소수가 맞음
	if i == 11:
		print(i)
        # 길이가 홀수고 뒤집은 문자열과 같다. 소수이면 출력
	else:
		if len(str(i)) % 2 != 0 and str(i) == str(i)[::-1] :
			if find_prime(i):
				print(i)

# 맨 마지막줄에는 -1 출력
print(-1)

좋은 웹페이지 즐겨찾기