Wagstaff primes: Difference between revisions

Content added Content deleted
(Added a note.)
(→‎{{header|Wren}}: Simplified a bit in light of recently added note but only a smidgen quicker.)
Line 217: Line 217:


var isWagstaff = Fn.new { |p|
var isWagstaff = Fn.new { |p|
var w = (2.pow(p) + 1) / 3
var w = (2.pow(p) + 1) / 3 // always integral
if (!w.isInteger || !Int.isPrime(w)) return [false, null]
if (!Int.isPrime(w)) return [false, null]
return [true, [p, w]]
return [true, [p, w]]
}
}


var isBigWagstaff = Fn.new { |p|
var isBigWagstaff = Fn.new { |p|
var w = Mpz.one.lsh(p).add(1)
var w = Mpz.one.lsh(p).add(1).div(3)
if (!w.isDivisibleUi(3)) return [false, null]
return w.probPrime(15) > 0
w.div(3)
if (w.probPrime(15) == 0) return [false, null]
return [true, p]
}
}


Line 254: Line 251:
if (Int.isPrime(p)) break
if (Int.isPrime(p)) break
}
}
var res = isBigWagstaff.call(p)
if (isBigWagstaff.call(p)) {
Fmt.print("$5d ($3d secs)", p, (System.clock - start).ceil)
if (res[0]) {
Fmt.print("$5d ($3d secs)", res[1], (System.clock - start).ceil)
count = count + 1
count = count + 1
}
}
Line 275: Line 271:
43: 2932031007403
43: 2932031007403


Took 0.056335 seconds
Took 0.055678 seconds


Values of 'p' for the next 19 Wagstaff primes and
Values of 'p' for the next 19 Wagstaff primes and
Line 293: Line 289:
3539 ( 5 secs)
3539 ( 5 secs)
5807 ( 25 secs)
5807 ( 25 secs)
10501 (198 secs)
10501 (193 secs)
10691 (210 secs)
10691 (205 secs)
11279 (251 secs)
11279 (244 secs)
12391 (348 secs)
12391 (341 secs)
14479 (599 secs)
14479 (593 secs)
</pre>
</pre>