How to resolve the algorithm Lucas-Lehmer test step by step in the Racket programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Lucas-Lehmer test step by step in the Racket programming language
Table of Contents
Problem Statement
Lucas-Lehmer Test: for
p
{\displaystyle p}
an odd prime, the Mersenne number
2
p
− 1
{\displaystyle 2^{p}-1}
is prime if and only if
2
p
− 1
{\displaystyle 2^{p}-1}
divides
S ( p − 1 )
{\displaystyle S(p-1)}
where
S ( n + 1 )
( S ( n )
)
2
− 2
{\displaystyle S(n+1)=(S(n))^{2}-2}
, and
S ( 1 )
4
{\displaystyle S(1)=4}
.
Calculate all Mersenne primes up to the implementation's maximum precision, or the 47th Mersenne prime (whichever comes first).
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Lucas-Lehmer test step by step in the Racket programming language
Source code in the racket programming language
#lang racket
(require math)
(define (mersenne-prime? p)
(divides? (- (expt 2 p) 1) (S (- p 1))))
(define (S n)
(if (= n 1) 4 (- (sqr (S (- n 1))) 2)))
(define (loop p)
(when (mersenne-prime? p)
(displayln p))
(loop (next-prime p)))
(loop 3)
You may also check:How to resolve the algorithm Find limit of recursion step by step in the Emacs Lisp programming language
You may also check:How to resolve the algorithm Stair-climbing puzzle step by step in the E programming language
You may also check:How to resolve the algorithm Yin and yang step by step in the SETL programming language
You may also check:How to resolve the algorithm Parameterized SQL statement step by step in the Tcl programming language
You may also check:How to resolve the algorithm ASCII art diagram converter step by step in the D programming language