我是靠谱客的博主 火星上跳跳糖,最近开发中收集的这篇文章主要介绍寻找第n个默尼森数。涉及质数判断和循环break continue,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

'''
寻找第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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部