要点
1. 先生成回文数,再判断回文数是否是质数
2.回文数的判断不能通过枚举然后传参判断,这样时间太长。如下就会碰见TLE。而是要直接生成回文数,这在main里可见
3.回文数的len必为奇数;质数的最后一个数字必为奇数
```
def check_pld(num): num_str = str(num) lenstr = len(num_str) for i in range(int(lenstr/2)): if num_str[i] != num_str[-i-1]: return False else: return True
```
源码:
```
def check_prime(num):
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
else:
return True
def main(a, b):
if a <= 5 <= b:
print(5)
if a <= 7 <= b:
print(7)
if a <= 11 <= b:
print(11)
if b >= 100:
# calculate 3_digits number
for i in range(1, 10, 2):
for j in range(10):
pld_num = int(str(i) + str(j) + str(i))
if pld_num > b:
return 0
if check_prime(pld_num) and a <= pld_num <= b:
print(pld_num)
if b >= 10000:
# calculate 5_digits number
for i in range(1, 10, 2):
for j in range(10):
for k in range(10):
pld_num = int(str(i) + str(j) + str(k) + str(j) + str(i))
if pld_num > b:
return 0
if check_prime(pld_num) and a <= pld_num <= b:
print(pld_num)
if b >= 1000000:
# calculate 7_digits number
for i in range(1, 10, 2):
for j in range(10):
for k in range(10):
for l in range(10):
pld_num = int(str(i) + str(j) + str(k) + str(l) + str(k) + str(j) + str(i))
if pld_num > b:
return 0
if check_prime(pld_num) and a <= pld_num <= b:
print(pld_num)
a, b = [int(i) for i in input().split()]
main(a, b)
```