Python之回文质数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Python之回⽂质数
回⽂质数
因为151既是⼀个质数⼜是⼀个回⽂数(从左到右和从右到左是看⼀样的),所以151是回⽂质数。
请写⼀个程序来找出范围[a,b] (5≤a≤b≤100000)间的所有回⽂质数。
Input
只有⼀⾏,为两个整数,依次代表a,b 。
Output
每个回⽂质数输出⼀⾏。
测试⽤例保证输⼊合法且输出⾄少包含⼀个回⽂质数。
Sample Input
100 200
Sample Output
101
131
151
181
191
直接上代码
1 str_a=[0]
2 str_b=[]
3 a,b=map(int,input().split())
4if(a>=5 and a<=b and b<=100000):
5for i in range(a,10):
6 flag3=0
7for j in range(2,i):
8if(i%j==0):
9 flag3=1
10break
11if(flag3==0):
12 str_b.append(i)
13for num in range(a,b):
14 i=num
15 str_a=[0]
16 flag=0
17 flag2=0
18 count=0
19if(int(i/10)>0):
20while i>0 :
21 str_a.append(i%10)
22 i=int(i/10)
23 count=count+1
24 c=int(count/2+1)
25for j in range(1,c+1):
26if str_a[j]!=str_a[count-j+1]:
27 flag=1
28break
29if flag==0:
30for i in range(2,num):
31if(num%i==0):
32 flag2=1
33break
34if flag2==0:
35 str_b.append(num)
36for i in range(0,len(str_b)):
37print(str_b[i])
38
39
上⾯这个写的有点繁琐,想到另外⼀种实现⽅式复杂度较低
1from math import *
2 z=[5,7,11]
3 x=[int(i) for i in input().split()]
4for i in range(1,10,2):
5for j in range(0,10):
6for k in range(0,10):
7 a=i*10000+j*1000+k*100+j*10+i
8for m in range(3, round(sqrt(a)) + 1):
9if a % m == 0:
10break
11else:
12 z.append(a)
13for i in range(1,10,2):
14for j in range(0,10):
15 a=i*100+j*10+i
16for k in range(3,round(sqrt(a))+1):
17if a%k==0:
18break
19else:
20 z.append(a)
21for i in range(1,10,2):
22for j in range(0,10):
23for k in range(0,10):
24for l in range(0,10):
25 a=1000000*i+j*100000+k*10000+l*1000+k*100+j*10+i 26for m in range(3, round(sqrt(a)) + 1):
27if a % m == 0:
28break
29else:
30 z.append(a)
31 z.sort()
32for i in z:
33if x[0]<=i<=x[1]:
34print(i)。