How to resolve the algorithm Lucas-Lehmer test step by step in the langur programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Lucas-Lehmer test step by step in the langur 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 langur programming language
Source code in the langur programming language
val .isPrime = f .i == 2 or
.i > 2 and not any f(.x) .i div .x, pseries 2 .. .i ^/ 2
val .isMersennePrime = f(.p) {
if .p == 2: return true
if not .isPrime(.p): return false
val .mp = 2 ^ .p - 1
for[.s=4] of 3 .. .p {
.s = (.s ^ 2 - 2) rem .mp
} == 0
}
writeln join " ", map f $"M\.x;", filter .isMersennePrime, series 2300
You may also check:How to resolve the algorithm URL encoding step by step in the Seed7 programming language
You may also check:How to resolve the algorithm Matrix-exponentiation operator step by step in the Go programming language
You may also check:How to resolve the algorithm Morse code step by step in the Pascal programming language
You may also check:How to resolve the algorithm Even or odd step by step in the 6502 Assembly programming language
You may also check:How to resolve the algorithm Time a function step by step in the Java programming language