Python 2.7 | 反素数问题

反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的数。例如: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是否兼容。

  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值