python描述回文素数_回文素数-随心随性无为而为-51CTO博客

问题描述:

所谓回文素数是指,对一个整数n从左向右和从右向左读结果值相同且是素数,即称为回文素数。

求不超过1000的回文素数。

我的代码:import math

def prime(m):

count=0

for i in range(2,int(math.sqrt(m))+1):

if m%i==0:

count=1

if count!=1:

return True

else:

return False

def palindrome(n):

if str(n)==str(n)[::-1]:

return True

else:

return False

for j in range(2,1000):

if prime(j) and palindrome(j):

print j,

结果:

2 3 5 7 11 101 131 151 181 191 313 353 373 383 727 757 787 797 919 929

我的思路:

定义两个函数,一个用来判断传入的数是否为素数,另一个用来判断传入的数是否为回文数,然后遍历2到1000中的数,判断是否同时满足既是素数又是回文数;

示例代码:import math

def isPrimeNumber(num):

i = 2

x = math.sqrt(num)

while i < x:

if num%i == 0:

return False

i += 1

return True

def Reverse(num):

rNum = 0

while num:

rNum = rNum*10 + num%10

num /= 10

return rNum

def RPrimeNumber(num):

arr = []

i = 2

while i < num:

if isPrimeNumber(i) and i == Reverse(i):

arr.append(i)

i += 1

return arr

print RPrimeNumber(1000)

结果:

[2, 3,4, 5, 7, 9, 11, 101, 121, 131, 151, 181, 191, 313, 353, 373, 383, 727, 757, 787, 797, 919, 929]

示例代码有点问题,4和121虽然是回文数但不是素数(2*2和11*11),应该是素数判断函数有问题,把其中的while i < x改为while i <= x即可;

改回来后的结果:

[2, 3, 5, 7, 11, 101, 131, 151, 181, 191, 313, 353, 373, 383, 727, 757, 787, 797, 919, 929]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值