题目描述
找出正整数 M 和 N 之间(N 不小于 M)的所有真素数。
真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数。
例如,11,13 均为真素数,因为 11 的反序还是为 11,13 的反序为 31 也为素数。
输入格式
输入两个数 M 和 N,空格间隔。
输出格式
按从小到大输出 M 和 N 之间(包括 M 和 N)的真素数,逗号间隔。如果之间没有真素数,则输出 No
。
输入输出样例
输入 #1
10 35
输出 #1
11,13,17,31
def find_primes(n):if n<=1:return Falsefor j in range(2, int(n**0.5) + 1):if n % j == 0:return Falsereturn Truex,y=map(int,input().split())
result=[]
for i in range(x,y+1):if find_primes(i):m= list(reversed(str(i)))a=''.join(m)if find_primes(int(a)):result.append(i)
if len(result)==0:print('No')
for i in range(len(result)):if i==len(result)-1:print((result[i]))else:print(result[i],end=',')
解析:
- if find_primes(i):循环判断x-y范围内的质数。
- 如果是质数,将该数翻转m= list(reversed(str(i)) a=''.join(m),并再次判断是否为质数。
- 将结果添加到result列表中,如果列表为空,则表述没有真素数,不为空输出结果即可。
学学学~