please assist in solving this problem;
For a given Mersenne number with exponent p, the number is prime if the Lucas-Lehmer series is 0 at position p - 2. Write a function that tests if a Mersenne number with exponent p is prime. Test if the Mersenne numbers with prime p between 3 and 65 are prime. Your final answer should be a list of tuples consisting of (Mersenne exponent, 0) or (1) for each Mersenne number you test, where 0 and 1 are replacements for 'False' and 'True' respectively. Shown below is my attempted solution
#function to define a mersenne number
def mersenne_number(p):
return 2**p - 1
#function to generate the Lucas-Lehmer sequence
def lucas_lehmer(p):
ll_seq = [4]
if p > 2:
for i in range(1, (p - 2) + 1):
n_i = (ll_seq[i-1] ** 2 - 2)%(2**p - 1)
ll_seq.append(n_i)
return ll_seq
#To generate a list of Tuples consisting of (mersenne exponents, 1 or 0), 1 and 0 represent True and False respectively.
mersenne_primes = []
def ll_prime(num1, num2):
for p in range(3, 65):
if lucas_lehmer(p)[-1] == 0:
mersenne_primes.append((p, 1))
else:
mersenne_primes.append((p, 0))
print(mersenne_primes)
I am getting a wrong output at this stage. The function is returning prime mersenne exponents as not prime meaning 0.