2024-04-26 05:29:45 发布
网友
我一直在尝试编写一个Python程序,它使用递归函数来查找作为输入提供的两个整数之间的回文素数。回文素数示例:313
我已经知道如何编写回文的递归函数,但我在这个问题上挣扎了很多。我会很感激你的帮助。谢谢
因为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素性测试。在
(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):
当你发现你的号码是否是回文时,你可以调用验证(先把它转换成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])
现在,您可以迭代这些数字,看看哪些是回文:
因为30000是限制,所以这是可行的(101101是最小的错误数字):
当然,您也可以在已有的递归回文函数中使用
(2**n-1)%n == 1
素性测试。在http://en.wikipedia.org/wiki/Fermat_primality_test
也许你已经有了这个想法,但我要做的是。。。在
如果你有这样的回文函数:
假设你有一个函数来判断一个数是否是素数(这个我取自here):
^{pr2}$当你发现你的号码是否是回文时,你可以调用验证(先把它转换成str)。 缺少的部分是生成两个整数的组合,但是很简单。在
希望这有帮助。在
-编辑: 添加用于获取素数的递归函数:
假设要递归地进行回文检查,请检查外部字符:
现在,您可以迭代这些数字,看看哪些是回文:
^{pr2}$相关问题 更多 >
编程相关推荐