编写Python代码,使用Lucas-Lehmer测试检查Mersenne数。
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给定值内的所有Lehmer测试值,在本例中为17。
发布于 2019-04-29 00:15:03
如果我没理解错你的问题,我认为问题不是在循环中进行追加,而是只有当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]
0https://stackoverflow.com/questions/55892021
复制相似问题