Anonymous user
Lucas-Lehmer test: Difference between revisions
→{{header|F Sharp|F#}}: added version based on folding
(→{{header|F Sharp|F#}}: added tail-recursive version to show how to write recursive loops) |
(→{{header|F Sharp|F#}}: added version based on folding) |
||
Line 518:
LucasLehmer 0 4I = 0I
</lang>
Version using library folding function (way shorter and faster than the above):
<lang fsharp>let IsMersennePrime exponent =
if exponent <= 1 then failwith "Exponent must be >= 2"
let prime = 2I ** exponent - 1I;
let LucasLehmer =
[| 1 .. exponent-2 |] |> Array.fold (fun acc _ -> (acc*acc - 2I) % prime) 4I
LucasLehmer = 0I
</lang>
|