因为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
最后排序选择区间内所有数