Lucas-Lehmer test for Mersenne numbers (Scheme)
From LiteratePrograms
This program is a code dump.
Code dumps are articles with little or no documentation or rearrangement of code. Please help to turn it into a literate program. Also make sure that the source of this code does consent to release it under the MIT or public domain license.
(define lucas-lehmer
(lambda (p)
(define loop
(lambda (s M count)
(if (> count 0)
(loop (remainder (- (* s s) 2) M) M (- count 1))
s)))
(let* ([s 4]
[M (sub1 (expt 2 p))]
[result (loop s M (- p 2))])
(= result 0))))
| Download code |