编写使用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测试值。
答案 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