如何编写回文素数的递归函数?

2024-04-26 05:29:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试编写一个Python程序,它使用递归函数来查找作为输入提供的两个整数之间的回文素数。回文素数示例:313

我已经知道如何编写回文的递归函数,但我在这个问题上挣扎了很多。我会很感激你的帮助。谢谢


Tags: 程序示例整数素数我会
3条回答

因为30000是限制,所以这是可行的(101101是最小的错误数字):

>>> [n for n in range(2, 500) if str(n) == str(n)[::-1] and (2**n-1)%n == 1]
[2, 3, 5, 7, 11, 101, 131, 151, 181, 191, 313, 353, 373, 383]

当然,您也可以在已有的递归回文函数中使用(2**n-1)%n == 1素性测试。在

http://en.wikipedia.org/wiki/Fermat_primality_test

也许你已经有了这个想法,但我要做的是。。。在

如果你有这样的回文函数:

def palindrome(word):
if len(word) == 1 or (len(word) == 2 and word[0] == word[1]):
    return True
else:
    if word[0] == word[len(word)-1]:
        return palindrome(word[1] + word[len(word)-2])
    else:
        return False

假设你有一个函数来判断一个数是否是素数(这个我取自here):

^{pr2}$

当你发现你的号码是否是回文时,你可以调用验证(先把它转换成str)。 缺少的部分是生成两个整数的组合,但是很简单。在

希望这有帮助。在

-编辑: 添加用于获取素数的递归函数:

def prime(number,limit = 1):
if limit == number:
    return True
else:
    if number % limit == 0 and limit != 1:
        return False
    else:
        return prime(number, limit + 1)

recursive function for palindromes

假设要递归地进行回文检查,请检查外部字符:

def is_pali(s):
    if len(s) <= 1:
        return True
    else:
        return s[0] == s[-1] and is_pali(s[1:-1])

现在,您可以迭代这些数字,看看哪些是回文:

^{pr2}$

相关问题 更多 >