Lucas-Lehmer test: Difference between revisions

Content added Content deleted
(Add J link)
(Modula-3)
Line 305: Line 305:
Finding Mersenne primes in M[2..2147483647]:
Finding Mersenne primes in M[2..2147483647]:
M2 M3 M5 M7 M13 M17 M19 M31 M61 M89 M107 M127 M521 M607 M1279 M2203 M2281 M3217 M4253 M4423 M9689 M9941 M11213
M2 M3 M5 M7 M13 M17 M19 M31 M61 M89 M107 M127 M521 M607 M1279 M2203 M2281 M3217 M4253 M4423 M9689 M9941 M11213

=={{header|Modula-3}}==
Modula-3 uses L as the literal for <tt>LONGINT</tt>.
<lang modula3>MODULE LucasLehmer EXPORTS Main;

IMPORT IO, Fmt, Long;

PROCEDURE Mersenne(p: CARDINAL): BOOLEAN =
VAR
s := 4L;
m := Long.Shift(1L, p) - 1L; (* 2^p - 1 *)
BEGIN
IF p = 2 THEN
RETURN TRUE;
ELSE
FOR i := 3 TO p DO
s := (s * s - 2L) MOD m;
END;
RETURN s = 0L;
END;
END Mersenne;

BEGIN
FOR i := 2 TO 63 DO
IF Mersenne(i) THEN
IO.Put("M" & Fmt.Int(i) & " ");
END;
END;
IO.Put("\n");
END LucasLehmer.</lang>
Output:
<pre>M2 M3 M5 M7 M13 M17 M19 M31 </pre>


=={{header|Oz}}==
=={{header|Oz}}==