您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页python123题目——回文素数

python123题目——回文素数

来源:华佗小知识

回文素数

类型:函数

描述

回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。

用户输入一个正整数 n , 请你在一行内输出从小到大排列的的前n个回文素数,数字后面用一个空格进行分隔。

输入格式

输入一个正整数

输出格式

符合要求的回文素数

示例

输入:10       
输出:2 3 5 7 11 101 131 151 181 191

参考代码

假设有字符串str,那么翻转字符串可以使用str[::-1]直接得到。

def is_prime(n):
    """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False
    减小判定区间,减少循环次数,提升效率。
    """
    if n < 2:
        return False      # 0、1、负数以及偶数都不是素数
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:    # 能被2到其根号n之间的整数整除的数不是素数
            return False
    else:
        return True       # for循环正常结束,未遇到return的数是素数


def palindromic(num):
    """接收一个数字为参数,判定其是否为回文数,返回布尔值。"""
    if str(num) == str(num)[::-1]:
        return True
    else:
        return False


def output_prime(num):
    """接收一个正整数num为参数,在一行中从小到大输出前num个回文素数。
    函数无返回值
    """
    i = 2                      # 从最小的素数2开始测试
    count = 0                  # 计数器置0
    while True:                # 无限循环
        if palindromic(i) and is_prime(i):  # 先判断回文再判断素数,效率高
            print(i, end=' ')  # i为回文素数时输出i,输出后不换行
            count = count + 1  # 每发现一个回文素数计数增加1
        if count == num:       # 如果找到回文素数数量与要求数量相同时
            break              # 结束循环
        i = i + 1              # 测试下一个数字


if __name__ == "__main__":
    n = int(input())
    output_prime(n)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务