python输出第n个默尼森数的实现示例

作者:VivianQiao93 时间:2022-08-12 21:07:25 

经典程序设计问题:找第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))

来源:https://blog.csdn.net/Viviancoder/article/details/104722776

标签:python,默尼森数
0
投稿

猜你喜欢

  • Python urllib3软件包的使用说明

    2023-08-04 13:51:31
  • MySQL 1303错误的解决方法(navicat)

    2024-01-25 21:24:42
  • .Net Core下使用Dapper的方法

    2023-07-16 17:19:17
  • 基于Python绘制世界疫情地图详解

    2021-11-23 09:10:36
  • python 名称空间与作用域详情

    2021-06-10 23:12:38
  • OpenCV模板匹配matchTemplate的实现

    2021-08-09 15:51:51
  • Python使用pip安装报错:is not a supported wheel on this platform的解决方法

    2022-12-12 09:07:09
  • XMLHTTP 使用代理获取数据asp代码

    2010-03-22 14:40:00
  • python采用getopt解析命令行输入参数实例

    2022-05-10 11:08:00
  • 表格可读性提升分析

    2010-05-19 13:03:00
  • Python 不设计 do-while 循环结构的理由

    2021-08-04 11:55:19
  • 通过按钮实时切换CSS样式 实现CSS换肤的实例

    2008-07-17 12:55:00
  • Python基础之变量的相关知识总结

    2021-05-09 00:16:06
  • pytorch加载自定义网络权重的实现

    2022-06-16 14:39:10
  • MySQL中的多字段相同数据去重复

    2024-01-17 11:21:21
  • Python3.5迭代器与生成器用法实例分析

    2022-11-03 14:50:47
  • 面向对象的XHTML与CSS编程

    2008-01-11 13:37:00
  • MacOS 下安装 MySQL8.0 登陆 MySQL的方法

    2024-01-19 11:30:02
  • python爬虫Scrapy框架:媒体管道原理学习分析

    2022-11-23 15:07:03
  • Python操作word常见方法示例【win32com与docx模块】

    2022-09-22 13:12:33
  • asp之家 网络编程 m.aspxhome.com