python实现isprime函数参数为整数_用python编写求5为整数中所有可逆素数

本文提供两种Python方法寻找5位回文素数。第一种通过遍历5位数并检查是否为素数及回文,第二种优化算法直接生成回文数再判断素数。代码包含isPrime和isPalindrome函数,并展示输出结果。
摘要由CSDN通过智能技术生成

展开全部

这个竟然没有人回答。。我来写一个,如果有bug还请大神指出 = =:import math

def isPrime(num):

# 如果被2到根号num之间的数整636f70793231313335323631343130323136353331333339653733除则不是素数

maxDiv = int(math.sqrt(num))

for d in range(2, maxDiv+1):

if num % d == 0:

return False

return True

def isPalindrome(num):

# 转成字符串判断是不是回文,效率较低。

# 但按照数字来判断的话,代码可能比这个难读。

s = str(num)

i = 0; j = len(s) - 1

while i 

if s[i] != s[j]:

return False

i += 1; j -= 1

return True

def main():

for num in range(10000, 100000):

if isPrime(num) and isPalindrome(num):

print num

main()

输出如下:

10301

10501

10601

11311

11411

12421

12721

12821

13331

13831

13931

14341

14741

15451

15551

16061

16361

16561

16661

17471

17971

18181

18481

19391

19891

19991

30103

30203

30403

30703

30803

31013

31513

32323

32423

33533

34543

34843

35053

35153

35353

35753

36263

36563

37273

37573

38083

38183

38783

39293

70207

70507

70607

71317

71917

72227

72727

73037

73237

73637

74047

74747

75557

76367

76667

77377

77477

77977

78487

78787

78887

79397

79697

79997

90709

91019

93139

93239

93739

94049

94349

94649

94849

94949

95959

96269

96469

96769

97379

97579

97879

98389

98689

在网上找到一个效率更高的方法,直接生成5位回文数,然后遍历回文数判断它是不是素数就好了,这样减少了很多数字的遍历:import math

def isPrime(num):

# 如果被2到根号num之间的数整除则不是素数

maxDiv = int(math.sqrt(num))

for d in range(2, maxDiv+1):

if num % d == 0:

return False

return True

def palindromeList():

for d1 in range(1, 10):

for d2 in range(0, 10):

for d3 in range(0, 10):

yield(d1*10000 + d2*1000 + d3*100 + d2*10 + d1)

def main():

for num in palindromeList():

if isPrime(num):

print num

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值