【问题标题】:python functions and mersenne numberpython函数和梅森数
【发布时间】:2020-04-24 14:32:03
【问题描述】:

一直在尝试在 python 中执行此操作但出现错误:

  1. 编写一个接受指数 p 并返回 3 到 65 之间的对应梅森数的函数

  2. 编写一个函数,接受梅森数的指数 p 并返回 Lucas-Lehmer 序列直到 i=p−2(含)。

  3. 对于具有指数 p 的给定梅森数,如果 Lucas-Lehmer 级数在位置 p-2 处为 0,则该数是素数。编写一个函数来测试指数为 p 的梅森数是否为素数。测试质数 p 在 3 到 65 之间(即 3、5、7、...、61)的梅森数是否为质数。您的最终答案应该是包含 (Mersenne exponent, 0)(或 1)的元组列表,用于您测试的每个 Mersenne 数,其中 0 和 1 分别替换 False 和 True。

def is_prime(number):
    if number <= 1:
        return False
    
    for factor in range(2, number):
        if number % factor == 0:
            return False

    return True

def print_primes(n):
    for number in range(1, n):
        if is_prime(number):
            print('%d is prime' % number)

【问题讨论】:

  • 请添加您已经编写的代码。
  • 如何添加代码?
  • 完成,看一下,但我只想列出 3 到 65 之间的质数
  • "编写一个接受指数 p 的函数" - 这个函数在哪里?无需检查 range(2, number),可以限制为 range(2, math.sqrt(number))

标签: python function primes


【解决方案1】:

第一个问题的答案:

def mersenne_number(p):
new_list = []
for number in p:
    temp = (2**number - 1)
    new_list.append(temp)
return new_list

def is_prime(number):
if number<2:
    return False

for factor in range(2, number):
    if number % factor == 0:
        return False
    
return True

def get_primes(n_start, n_end):
    my_list = []
    for number in range(n_start, n_end):
        if is_prime(number):
            my_list.append(number)
    return my_list

mersennes = mersenne_number(get_primes(3,65))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 2016-11-27
    • 2013-07-12
    相关资源
    最近更新 更多