python输出第n个默尼森数的实现示例
经典程序设计问题:找第n个默尼森数。P是素数且M也是素数,并且满足等式M=2P-1,则称M为默尼森数。例如,P=5,M=2P-1=31,5和31都是素数,因此31是默尼森数。(31是第3个默尼森数)
该程序的功能可以分为两部分设计:一是判断是否为素数,二是输出第n个Monisen数。
对于一来说,根据素数概念,只需要检测从2到其平方根是否有因子,若有则不为素数。对于二来说,循环计算M=2p-1并调用一的函数即可完成
from math import sqrt,pow
def prime(num):
"""检测num是不是质数"""
k = sqrt(num)
for i in range(2,int(k+1)):
if num % i == 0:
return False
return True
def monisen(no):
"""找出第no个莫尼森数"""
n = 0
num = 2
while n < no:
m = pow(2,num) - 1
if prime(num) == True and prime(m) == True:
# 只有num和m都为质数时,n才会加一,即n是莫尼森数的序号
n += 1
num += 1
return int(m),num-1
# 输出前五个莫尼森数M 以及对应的质数P
for i in range(1,6):
print(monisen(i))
到此这篇关于python输出第n个默尼森数的实现示例的文章就介绍到这了,更多相关python 输出默尼森数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Python实现的寻找前5个默尼森数算法示例
本文实例讲述了Python实现的寻找前5个默尼森数算法.分享给大家供大家参考,具体如下: 找前5个默尼森数. 若P是素数且M也是素数,并且满足等式M=2**P-1,则称M为默尼森数.例如,P=5,M=2**P-1=31,5和31都是素数,因此31是默尼森数. python2代码如下: from math import sqrt def isPrime(n): 'judge whether a positive integer is a prime number!' if n==1: return
-
python输出第n个默尼森数的实现示例
经典程序设计问题:找第n个默尼森数.P是素数且M也是素数,并且满足等式M=2P-1,则称M为默尼森数.例如,P=5,M=2P-1=31,5和31都是素数,因此31是默尼森数.(31是第3个默尼森数) 该程序的功能可以分为两部分设计:一是判断是否为素数,二是输出第n个Monisen数. 对于一来说,根据素数概念,只需要检测从2到其平方根是否有因子,若有则不为素数.对于二来说,循环计算M=2p-1并调用一的函数即可完成 from math import sqrt,pow def prime(num)
-
Python输出PowerPoint(ppt)文件中全部文字信息的方法
本文实例讲述了Python输出PowerPoint(ppt)文件中全部文字信息的方法.分享给大家供大家参考.具体分析如下: 下面的代码依赖于windows com,所以必须在机器上安装PowerPoint才能用,可以将PPT文件中的所有纯文本信息进行输出到指定的文件,非常实用. import win32com from win32com.client import Dispatch, constants ppt = win32com.client.Dispatch('PowerPoint.App
-
python输出指定月份日历的方法
本文实例讲述了python输出指定月份日历的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python import calendar cal = calendar.month(2008, 1) print "Here is the calendar:" print cal; 运行结果如下: Here is the calendar: January 2008 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13
-
python输出当前目录下index.html文件路径的方法
本文实例讲述了python输出当前目录下index.html文件路径的方法.分享给大家供大家参考.具体实现方法如下: import os import sys path = os.path.join(os.path.dirname(sys.argv[0]),'index.html') print path 希望本文所述对大家的Python程序设计有所帮助.
-
Python输出9*9乘法表的方法
本文实例讲述了Python输出9*9乘法表的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # 9 * 9 for i in range(1, 10): print for j in range(1, i+1): print "%d*%d=%d" % (i, j, i*j), 补充一个更简单的方法: 复制代码 代码如下: print('\n'.join([ ' '.join([ "%d*%d=%2s" %(y,x,x*y)
-
Python输出汉字字库及将文字转换为图片的方法
用python输出汉字字库 问题1:假设我们知道汉字编码范围是0x4E00到0x9FA5,怎么从十六进制的编码转成人类可读的字呢? 问题2:怎么把unicode编码的字写入文件呢,如果直接用open()的话,会提示UnicodeEncodeError: 'ascii' codec can't encode character u'\u4e00' in position 0: ordinal not in range(128) 问题1的答案是用unichr,问题2的答案是用codecs. 下面上代
-
Python输出由1,2,3,4组成的互不相同且无重复的三位数
题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源代码 方法1: #!/usr/bin/python # -*- coding: UTF-8 -*- for i in range(1,5): for j in range(1,5): for k in range(1,5): if( i != k ) and (i != j) and (j != k):
-
python 输出上个月的月末日期实例
如下所示: import dateutil def before_month_lastday(ti): today=dateutil.parser.parse(str(ti)) first = datetime.date(day=1, month=today.month, year=today.year) lastMonth = first - datetime.timedelta(days=1) cc=str(lastMonth.year)+str(lastMonth.month)+str(l
-
解决nohup重定向python输出到文件不成功的问题
原因是: It looks like you need to flush stdout periodically (e.g. sys.stdout.flush()). In my testing Python doesn't automatically do this even with print until the program exits. You can run Python with the -u flag to avoid output buffering 所以, 解决办法之一:加
随机推荐
- c#中list.FindAll与for循环的性能对比总结
- Javascript 闭包详解及实例代码
- AngularJs入门教程之环境搭建+创建应用示例
- 浅谈java中null是什么,以及使用中要注意的事项
- iOS 9.0后微信支付回调处理实例
- 在ASP.NET中连接SQL Server的简单方法
- 详解Java设计模式编程中的里氏替换原则
- asp存储过程使用大全
- 浅析MySQL replace into 的用法
- JS链式调用的实现方法
- 介绍Ruby中的模块与混合类型的相关知识
- 使用php验证复选框有效性的示例
- Python语言编写电脑时间自动同步小工具
- 2014最热门的24个php类库汇总
- php递归法读取目录及文件的方法
- php中选择什么接口(mysql、mysqli)访问mysql
- Android中RecyclerView实现多级折叠列表效果(二)
- 融龙数据为您提供30M免费ASP空间服务
- Python安装图文教程 Pycharm安装教程
- Python动态生成多维数组的方法示例
