关于#python#的问题,请各位专家解答!

img

img


为什么根据答案的代码,打出来结果却不一样?要怎么改才能呢?如果可以能不能说一下每个步骤是干什么的?

是 int (sqrt(n)) + 1
不是 int (sqrt(n) + 1)

以下是参考代码和详细的代码注解,望采纳

# 用于判断一个数是否为素数的函数
def is_prime(n: int) -> bool:
    if n <= 1:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

# 用于找出指定个数的默尼森数的函数
def find_m_primes(n: int) -> List[int]:
    # 用于保存结果的列表
    result = []

    # 枚举 P 的值,并判断是否为默尼森数
    p = 2
    while len(result) < n:
        # 计算 M 的值
        m = 2 ** p - 1

        # 如果 P 和 M 都是素数,则将 M 加入结果列表
        if is_prime(p) and is_prime(m):
            result.append(m)

        # 继续枚举下一个 P 的值
        p += 1

    # 返回结果列表
    return result

# 找出 5 个默尼森数
print(find_m_primes(5))
# 输出:[3, 7, 31, 127, 8191]