如何编写一个函数mersenne_prime,它接受参数n_max并返回所有小于p_n_max的梅森素数q的列表?

问题描述 投票:0回答:1

梅森素数是q = 2 ^ p-1的那些数,其中p和q都是素数。编写一个带有参数n_max的mersenne_prime函数,并返回所有小于p_n_max的p的梅森素数q的列表。提示:应该有8个Mersenne质数,且p小于40。

我编写了以下代码,但对于我输入到mersenne_prime(x)中的任何值,它生成的唯一输出是3。>

def isprime(n):
  if n < 2:
    return False
  elif n == 2:
    return True
  else:
    if n % 2 == 0:
      return False
    for i in range(3,n,2):
      if n % i == 0:
        return False
    return True


def mersenne_prime(n_max):
  for i in range(1,n_max,1):
    q = 2**i-1
    if isprime(i) and isprime(q):
     print(q)

有人能够提供帮助以产生可生成梅森素数的工作代码吗?

编辑:将return函数更改为print可以适用于不同的输入值,但是在不同的系统中测试代码会产生错误消息。

Traceback (most recent call last):
  File "/home/runner/unit_tests.py", line 134, in test_mersenne_prime
    assert(len(mersenne_prime(4)) ==  len(correct_list)), \
TypeError: object of type 'NoneType' has no len()

梅森素数是q = 2 ^ p-1的那些数,其中p和q都是素数。编写一个函数mersenne_prime,该函数接受参数n_max并返回所有Mersenne素数q的列表,以减少p减...

python function primes
1个回答
0
投票

计算梅森素数的更好方法是使用Lucas-Lehmer检验:

© www.soinside.com 2019 - 2024. All rights reserved.