首页 > 技术文章 > 用Pyton玩转数据练习题---第二周

xaomng 2016-04-25 17:55 原文

找前5个默尼森数。P是素数且M也是素数,并且满足等式M=2**P-1,则称M为默尼森数。例如,P=5,M=2**P-1=31,5和31都是素数,因此31是默尼森数。

 1 # coding:utf-8
 2 import math
 3 
 4 def isPrime(n):
 5     if n != int(n) or n <= 1:
 6         return False                #确保n是正整数
 7     i = 2
 8     while i*i <= n:
 9         if n % i == 0:
10             return False
11         i += 1
12     return True
13 
14 def judge_mns(n):
15         if isPrime(n) and isPrime(math.log(n + 1, 2)):
16             return True
17         return False
18 
19 def get_mns(n):
20     if n != int(n) or n < 1:
21         return []
22     x = 2
23     mns_number = []
24     while True:
25         if judge_mns(x):
26             mns_number.append(x)
27         if len(mns_number) == n:
28             break
29         x += 1
30     return mns_number
31 
32 print get_mns(5)

事实上一开始不明白怎么判断素数 蛤蛤蛤 在网上看了别人的弄了好久才明白。

推荐阅读