7-1 可逆素数 (30 分)
输入两个正整数m和n,且m<n,求[m,n]之间的可逆素数列表。可逆素数:素数的各位数字顺序颠倒后得到的数仍是素数
输入格式:
分行输入m和n
输出格式:
输出可逆素数列表
输入样例1:
50
100
输出样例1:
[71, 73, 79, 97]
输入样例2:
200
300
输出样例1:
no exit
先写一个函数来判断回文数,这个两种思路,通用的思路是取余然后再相加判断相等,python可以取巧直接转换成字符串然后判断s[]==s[::-1],然后再写一个判断是否为质数的函数,这个最简单的思路就是写个循环判断有无因数
from typing import *
class Solution:
def primeReverse(self, m: int, n: int) -> List[int]:
def is_prime(x):
return x > 1 and all(x % d for d in range(2, int(x ** .5) + 1))
def reverse(x):
rev = 0
while (x > 0):
digit = x % 10
rev = (rev * 10) + digit
x = x // 10
return rev
out = []
for num in range(m, n + 1):
if is_prime(num) and is_prime(reverse(num)):
out.append(num)
return out
def main():
ret = Solution().primeReverse(50, 100)
print(ret)
if __name__ == '__main__':
main()