热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python求梅森尼数_梅森尼数寂寞暴走伤的个人空间OSCHINA中文开源技术交流社区...

问题描述:法国数学家梅森尼对这类形如2^n-1的素数特别感兴趣,做过很多有意义的工作,后人把此类数命名为梅森尼数。已经证明了,

问题描述:

法国数学家梅森尼对这类形如2^n-1的素数特别感兴趣,做过很多有意义的工作,后人把此类数命名为梅森尼数。

已经证明了,如果2^n-1是素数,则幂指数n必须是素数,然而,反过来并不对,当n是素数时,2^n-1不一定是素数。例如,人们已经找出2^11-1是一个合数,23可以除尽它,2^23-1是一个合数,47可以除尽它。

编程找出指数n在(2,50)中的梅森尼数。

我的代码:

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==0:

return True

else:

return False

for j in range(2,50):

if prime(2**j-1) and prime(j):

print j,2**j-1

结果:

幂   梅森尼数

2     3

3     7

5     31

7     127

13    8191

17    131071

19    524287

31    2147483647

我的思路:

过程很简单,就是定义一个函数用来判断传入的参数是否为素数,然后遍历2到50之间的数,输出同时满足指数是素数,对应的2^n-1也是素数的数即可;

示例代码:

import math

def isPrimeNumber(num):

i = 2

x = math.sqrt(num)

while i <&#61; x:

if num%i &#61;&#61; 0:

return False

i &#43;&#61; 1

return True

def masonNumber(num):

arr &#61; []

for i in xrange(2, num &#43; 1):

if isPrimeNumber(i) and isPrimeNumber(2**i - 1):

arr.append(2**i - 1)

return arr

print masonNumber(50)



推荐阅读
author-avatar
多米音乐_34363545
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有