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