python 求可逆素数 新人做题求大佬

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()