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}}== |