网络编程
位置:首页>> 网络编程>> Python编程>> python输出第n个默尼森数的实现示例

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

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

标签:python,默尼森数

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

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com