概述
'''
寻找第n个默尼森数。
代码格式如下:
def prime(num):
...
def monisen(no):
… …
return xxx
print(monisen(int(input()))) #此处不需要自己输入,只要写这样一条语句即可,主要完成monisen()函数寻 (4分)
经典程序设计问题:找第n个默尼森数。P是素数且M也是素数,并且满足等式M=2**P-1,则称M为默尼森数。例如,P=5,M=2**P-1=31,5和31都是素数,因此31是默尼森数。
输入格式:按提示用input()函数输入
输出格式:int类型 输入样例:4 输出样例:127
'''
import math
def prime(num):
if num == 1:
return False
else:
k = int(math.sqrt(num))
for i in range(2,k + 1): ##为什么 for i in range(2,2) :直接结束循环了呢????是因为没有循环,正常结束?
if num % i == 0:
##print("this isn't a prime")
break
else:
return True
#先从头算默尼森数,感觉我这种方法开始还好,后面数字大了很难找,太耗资源
def monisen(no): p = 2 i = 0 while(p): if prime(p): m = 2**p -1 p = p + 1 if prime(m): i = i + 1 if ( i == no): return m break else: continue else: continue else: p = p + 1 j = 0 while j < 10: print(monisen(int(input("which monisen do you want to find:")))) j += 1#需要随便输入一个数字,找到对应的 第几个默尼森数,我认为应该取循环查找
这肯定不是一个好方法,先留着,后面继续学习改进,哈哈,也请看到的朋友多指教
看运行时间:
time -p python3 test_monisen.py
看运行内存情况:
mprof run test_mon.py
mprof plot -output mprofile_20180517183930.dat 报错
pip3 install matplotlib 需要mat库
mprof plot -output mprofile_20180517183930.dat
最后
以上就是火星上跳跳糖为你收集整理的寻找第n个默尼森数。涉及质数判断和循环break continue的全部内容,希望文章能够帮你解决寻找第n个默尼森数。涉及质数判断和循环break continue所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复