📅  最后修改于: 2023-12-03 15:23:01.966000             🧑  作者: Mango
回文素简单来说就是既是回文字符串又是素数的字符串。回文字符串是指顺读和倒读都相同的字符串,素数是除了1和本身以外没有其他因数的正整数。
下面给出一个 Python 实现的例子:
def is_palindrome(word):
"""判断一个字符串是否是回文字符串"""
return word == word[::-1]
def is_prime(n):
"""判断一个数是否是素数"""
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def is_palindrome_prime(word):
"""判断一个字符串是否是回文素"""
if not is_palindrome(word):
return False
n = int(word)
if not is_prime(n):
return False
return True
以上代码定义了三个函数,is_palindrome()
判断一个字符串是否是回文字符串,is_prime()
判断一个数是否是素数,is_palindrome_prime()
判断一个字符串是否是回文素。
下面给出测试过程:
print(is_palindrome("level")) # True
print(is_palindrome("hello")) # False
print(is_prime(17)) # True
print(is_prime(20)) # False
print(is_palindrome_prime("131")) # True
print(is_palindrome_prime("383")) # True
print(is_palindrome_prime("123")) # False
以上代码输出的结果分别是:
True
False
True
False
True
True
False
is_palindrome()
和 is_prime()
的实现比较简单,这里不过多赘述。is_palindrome_prime()
的实现比较直观,先判断是否是回文字符串,再判断是否是素数。
这里提一下判断素数的算法。假设要判断一个数 n 是否是素数,只需要测试 n 是否能被 2 到 $\sqrt{n}$ 之间的所有数整除,如果都不能整除,那么 n 就是素数。这里用到了一个小技巧,即在取平方根时使用 int(n ** 0.5) + 1
,这样可以减少循环次数,提高效率。
总之,回文素是一个很有趣的概念,同时也是一个经典的编程练手题目。