Ultra useful primes: Difference between revisions
→{{header|Wren}}: Added a CLI version and marginal improvement for embedded version.
(→{{header|Wren}}: Added a CLI version and marginal improvement for embedded version.) |
|||
Line 112:
=={{header|Wren}}==
===CLI===
{{libheader|Wren-gmp}}▼
{{libheader|Wren-big}}
{{libheader|Wren-fmt}}
Manages to find the first ten but takes 84 seconds to do so.
<lang ecmascript>import "./big" for BigInt
import "./fmt" for Fmt
var one = BigInt.one
The following takes about 17.5 seconds to get to n = 13 but 7 minutes 15 seconds to reach n = 14. I didn't bother after that.▼
var two = BigInt.two
var a = Fn.new { |n|
var p = (BigInt.one << (1 << n)) - one
var k = 1
while (true) {
if (p.isProbablePrime(5)) return k
p = p - two
k = k + 2
}
}
System.print(" n k")
System.print("----------")
for (n in 1..10) Fmt.print("$2d $d", n, a.call(n))</lang>
{{out}}
<pre>
n k
----------
1 1
2 3
3 5
4 15
5 5
6 59
7 159
8 189
9 569
10 105
</pre>
===Embedded===
▲{{libheader|Wren-gmp}}
▲The following takes about 17
<lang ecmascript>import "./gmp" for Mpz
import "./fmt" for Fmt
var one = Mpz.one
var two = Mpz.two
var a = Fn.new { |n|
var p = Mpz.one.lsh(1 << n).sub(one)
var k = 1
while (true) {
k = k + 2
}
|