python反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。例如:17和71都是素数,所以,17和71都是反素数。编写程序,输入一个正整数,显示大于该数的前10个反素数。
问题描述:
题目内容:
反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。例如:17和71都是素数,所以,17和71都是反素数。编写程序,输入一个正整数,显示大于该数的前10个反素数。
输入格式:
一个正整数
输出格式:
显示前10个反素数,在同一行输出,空格分隔,结尾无空格。
输入样例:
12
输出样例:
13 17 31 37 71 73 79 97 107 113
答
def prime(n):
for i in range(2,n//2+1):
if n%i==0:
return False
return True
n=int(input())
sum=0
while sum<10:
n+=1
n_reverse=str(n)
n_reverse=int(n_reverse[::-1])
if prime(n) and prime(n_reverse) and n_reverse!=n:
sum+=1
if sum==10:
print(n,end="")
else:
print(n,end=" ")
答
以下代码Out(n)函数中的条件之一: str(n)!=str(n)[::-1],为排除101这类反素数等于自身的回文数。
def isPrime(n):
for i in range(2,n):
if n%i==0: return False
return True
def Out(n):
res = []
while len(res)<10:
n += 1
if isPrime(n) and isPrime(int(str(n)[::-1])) and str(n)!=str(n)[::-1]:
res.append(n)
return res
num = int(input('请输入一个正整数:'))
for i in Out(num):
print(i, end=' ')