python 处理回文质数

因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。

写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数;

输入输出格式
输入格式:
第 1 行: 二个整数 a 和 b .

输出格式:
输出一个回文质数的列表,一行一个。

输入输出样例
输入样例#1:
5 500
输出样例#1:
5
7
11
101
131
151
181
191
313
353
373
383

直接上代码:

from math import *
z=[5,7,11]
x=[int(i) for i in input().split()]
for i in range(1,10,2):
    for j in range(0,10):
        for k in range(0,10):
            a=i*10000+j*1000+k*100+j*10+i
            for m in range(3, round(sqrt(a)) + 1):
                if a % m == 0:
                    break
            else:
                z.append(a)
for i in range(1,10,2):
    for j in range(0,10):
        a=i*100+j*10+i
        for k in range(3,round(sqrt(a))+1):
            if a%k==0:
                break
        else:
            z.append(a)
for i in range(1,10,2):
    for j in range(0,10):
        for k in range(0,10):
            for l in range(0,10):
                a=1000000*i+j*100000+k*10000+l*1000+k*100+j*10+i
                for m in range(3, round(sqrt(a)) + 1):
                    if a % m == 0:
                        break
                else:
                    z.append(a)
z.sort()
for i in z:
    if x[0]<=i<=x[1]:
        print(i)

注意两个点,可以优化一点点,完成本题没问题
偶数位绝对不是回文质数(11除外)
所以range(1,10,2)
由于最大100,000,000
所以只选择了 这三个区间
1000000-9999999
10000-99999
100-999
最后排序选择区间内所有数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值