Mersenne primes: Difference between revisions
Content added Content deleted
(Added Algol 68) |
(→{{header|Wren}}: Added a GMP version.) |
||
Line 2,082: | Line 2,082: | ||
=={{header|Wren}}== |
=={{header|Wren}}== |
||
===Wren-CLI=== |
|||
{{libheader|Wren-math}} |
{{libheader|Wren-math}} |
||
{{libheader|Wren-big}} |
{{libheader|Wren-big}} |
||
Line 2,122: | Line 2,123: | ||
2 ^ 521 - 1 |
2 ^ 521 - 1 |
||
2 ^ 607 - 1 |
2 ^ 607 - 1 |
||
</pre> |
|||
===Embedded (GMP)=== |
|||
{{libheader|Wren-gmp}} |
|||
This finds the first 23 Mersenne primes in about 172 seconds which is virtually the same as the Go non-concurrent version using their GMP plug-in when run on my machine. |
|||
<syntaxhighlight lang="ecmascript">import "./math" for Int |
|||
import "./gmp" for Mpz |
|||
var MAX = 23 |
|||
System.print("The first %(MAX) Mersenne primes are:") |
|||
var count = 0 |
|||
var p = 2 |
|||
while (true) { |
|||
var m = Mpz.one.lsh(p).sub(1) |
|||
if (m.probPrime(15) > 0) { |
|||
System.print("2 ^ %(p) - 1") |
|||
count = count + 1 |
|||
if (count == MAX) break |
|||
} |
|||
while (true) { |
|||
p = (p > 2) ? p + 2 : 3 |
|||
if (Int.isPrime(p)) break |
|||
} |
|||
}</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
The first 23 Mersenne primes are: |
|||
2 ^ 2 - 1 |
|||
2 ^ 3 - 1 |
|||
2 ^ 5 - 1 |
|||
2 ^ 7 - 1 |
|||
2 ^ 13 - 1 |
|||
2 ^ 17 - 1 |
|||
2 ^ 19 - 1 |
|||
2 ^ 31 - 1 |
|||
2 ^ 61 - 1 |
|||
2 ^ 89 - 1 |
|||
2 ^ 107 - 1 |
|||
2 ^ 127 - 1 |
|||
2 ^ 521 - 1 |
|||
2 ^ 607 - 1 |
|||
2 ^ 1279 - 1 |
|||
2 ^ 2203 - 1 |
|||
2 ^ 2281 - 1 |
|||
2 ^ 3217 - 1 |
|||
2 ^ 4253 - 1 |
|||
2 ^ 4423 - 1 |
|||
2 ^ 9689 - 1 |
|||
2 ^ 9941 - 1 |
|||
2 ^ 11213 - 1 |
|||
</pre> |
</pre> |
||