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 所以, 解决办法之一:加
随机推荐
- 简单获取键盘的KeyCode
- 一个简单的linux命令 pwd
- Lua中的元表和元方法学习笔记
- js实现div在页面拖动效果
- Thinkphp结合AJAX长轮询实现PC与APP推送详解
- c++实现逐行读取配置文件写入内存的示例
- Android编程之通知栏的用法小结
- Android通过原生APi获取所在位置的经纬度
- The remote procedure call failed and did not execute的解决办法
- Linux下中文字体的安装
- 使用 NodeJS+Express 开发服务端的简单介绍
- C与C++之间相互调用实例方法讲解
- 详解CentOS 7下安装Tomcat到服务
- 老生常谈的跨域处理
- Hibernate的Annotation版Hello world实例
- android自定义组件实现方法
- C++设计模式之外观模式
- PHP实现读取一个1G的文件大小
- PHP内置过滤器FILTER使用实例
- jQuery基于Ajax实现读取XML数据功能示例