📜  回文素(1)

📅  最后修改于: 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,这样可以减少循环次数,提高效率。

总之,回文素是一个很有趣的概念,同时也是一个经典的编程练手题目。