Factorial primes: Difference between revisions

Content added Content deleted
(→‎{{header|Wren}}: Less repetitious.)
Line 345: Line 345:
var f = 1
var f = 1
while (true) {
while (true) {
if (Int.isPrime(f-1)) {
for (gs in [[f-1, "-"], [f+1, "+"]]) {
if (Int.isPrime(gs[0])) {
Fmt.print("$2d: $2d! - 1 = $d", c = c + 1, i, f - 1)
Fmt.print("$2d: $2d! $s 1 = $d", c = c + 1, i, gs[1], gs[0])
if (c == 10) return
if (c == 10) return
}
if (Int.isPrime(f+1)) {
}
Fmt.print("$2d: $2d! + 1 = $d", c = c + 1, i, f + 1)
if (c == 10) return
}
}
i = i + 1
i = i + 1
Line 374: Line 372:
===Stretch===
===Stretch===
{{libheader|Wren-gmp}}
{{libheader|Wren-gmp}}
This takes about 28.5 seconds to reach the 33rd factorial prime on my machine (Core i7) with the last two being noticably slower to emerge. Likely to be very slow after that as the next factorial prime is 1477! + 1.
This takes about 28.5 seconds to reach the 33rd factorial prime on my machine (Core i7) with the last two being noticeably slower to emerge. Likely to be very slow after that as the next factorial prime is 1477! + 1.
<lang ecmascript>import "./gmp" for Mpz
<lang ecmascript>import "./gmp" for Mpz
import "./fmt" for Fmt
import "./fmt" for Fmt
Line 386: Line 384:
f.mul(i)
f.mul(i)
var r = (i < 21) ? 1 : 0 // test for definite primeness below 2^64
var r = (i < 21) ? 1 : 0 // test for definite primeness below 2^64
if ((f-1).probPrime(15) > r) {
for (gs in [[f-1, "-"], [f+1, "+"]]) {
var s = (f-1).toString
if (gs[0].probPrime(15) > r) {
var sc = s.count
var s = gs[0].toString
var digs = sc > 40 ? "(%(sc) digits)" : ""
var sc = s.count
Fmt.print("$2d: $3d! - 1 = $20a $s", c = c + 1, i, s, digs)
var digs = sc > 40 ? "(%(sc) digits)" : ""
Fmt.print("$2d: $3d! $s 1 = $20a $s", c = c + 1, i, gs[1], s, digs)
if (c == limit) return
if (c == limit) return
}
if ((f+1).probPrime(15) > r) {
}
var s = (f+1).toString
var sc = s.count
var digs = sc > 40 ? "(%(sc) digits)" : ""
Fmt.print("$2d: $3d! + 1 = $20a $s", c = c + 1, i, s, digs)
if (c == limit) return
}
}
i = i + 1
i = i + 1