【发布时间】:2020-04-15 18:20:05
【问题描述】:
我为使用 Lucas-Lehmer 检验验证的 Prime Mersenen 数的赋值编写了以下代码。问题是代码对最多 15 的素数都可以正常工作,如果我超过它,它会继续运行。
def is_prime(number):
if number <= 1:
return False
for factor in range(2, number):
if number % factor == 0:
return False
return True
mersenne = []
for number in range (3, 20):
if is_prime (number):
mersenne.append (2**number - 1)
primes = []
for i in range (3,20):
if is_prime (i):
primes.append (i)
print (primes)
def lucas_lehmer(number):
M = 2**number - 1
s = 4
for _ in range(number-2):
s = (s*s - 2) % M
return True
lucas = []
for number in mersenne:
if is_prime (number):
if lucas_lehmer (number):
lucas.append (1)
else:
lucas.append (0)
print (lucas)
mercenne_primes = zip (primes, lucas)
print (list (mercenne_primes))
【问题讨论】:
标签: python python-3.x primes