反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的数。例如:13和31都是素数,所以,13和31都是反素数。
题目:
给定一个正整数n(1 <= n <= 100), 请你输出从小到大排列的前n个反素数,数字间以空格进行分隔。
解题思路:
判断一个数是否是反素数,要先判断它是否是素数,若是再判断它的逆向拼写是否为素数。而对于2、3、7,他们是逆向拼写是本身,所以他们是反素数。每判断出一个,就把这个数加入结果数组result[ ]。
而题目中也规定是前n个反素数,可以引入一个计数,使计算小于n。
result=[]
n=input()
def judge(n):
if (n==1):
return False
for i in range(2,n):
if(n%i==0):
return False
return True
sum=0
b=1
while b<=100 and sum<n:
b=b+1
if judge(b) != False and b<=10:
result.append(b)
sum=sum+1
else:
if judge(b)!= False:
m=b%10
s=b//10
if judge(m*10+s*1)!=False:
result.append(b)
sum=sum+1
for i in range(0,n):
print result[i],
小记:这道题考试的时候没有作出,但找老师补考卷一的时候,老师又出了这道题,就把它写了下来。反思一下为什么考试时候没有写出来,明白了是因为自己疏于思考,考试看到反素数的时候毫无思路。希望自己引以为戒,勤思考。
注:版本为pytho2.7,写的过程较为复杂。python2.7也不如python3方便,不知道python是否兼容。