Lucas-Lehmer Mersenne数字与Python

时间:2019-04-28 15:59:56

标签: python-3.x

编写使用Lucas-Lehmer测试检查Mersenne数的Python代码。

def lucas_lehmer(p):
 my_list=[4]
 value=2**p-1
 lucas=4
 for val in range(1, p - 1):
    lucas=(lucas*lucas-2)%value
 if lucas== 0:
        my_list.apprend(lucas)
 else: 
  break
 print(my_list)
 print(lucas)

上面显示的代码仅显示给出第一次迭代的结果,而与选择的p值无关。我希望能够显示给定p值(在这种情况下为17)内的所有Lehmer测试值。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,我认为问题不是在循环中执行附加操作,而是仅当p是质数时。您的格式有些不正确,因此我不确定100%是否正确。此外,您在append中有一个错字。我添加了一些代码来打印素数测试的实际结果。

def lucas_lehmer(p):
    my_list=[4]
    value=2**p-1
    lucas=4
    for val in range(1, p - 1):
        lucas = ((lucas*lucas)-2) % value
        my_list.append(lucas)
    if lucas == 0:
        print("prime")
    else:
        print("composite")
    print(my_list)
    print(lucas)

调用lucas_lehmer(7)会导致以下输出:

prime
[4, 14, 67, 42, 111, 0]
0