Mersenne primes: Difference between revisions

Content added Content deleted
m (Phix/mpfr)
(→‎{{header|Wren}}: Now uses Wren-math module.)
Line 1,295: Line 1,295:


=={{header|Wren}}==
=={{header|Wren}}==
{{libheader|Wren-math}}
As far as exact integer arithmetic in Wren will allow us to go.
As far as exact integer arithmetic in Wren will allow us to go.
<lang ecmascript>var isPrime = Fn.new { |n|
<lang ecmascript>import "/math" for Int
if (n < 2 || !n.isInteger) return false
if (n%2 == 0) return n == 2
if (n%3 == 0) return n == 3
var d = 5
while (d*d <= n) {
if (n%d == 0) return false
d = d + 2
if (n%d == 0) return false
d = d + 4
}
return true
}


System.print("The following Mersenne numbers are prime:")
System.print("The following Mersenne numbers are prime:")
for (i in 1..31) {
for (i in 1..31) {
var m = (1<<i) - 1
var m = (1<<i) - 1
if (isPrime.call(m)) {
if (Int.isPrime(m)) {
var sp = (i < 10) ? " " : ""
var sp = (i < 10) ? " " : ""
System.print("M(%(i))%(sp) = 2 ^ %(i)%(sp) - 1 = %(m)")
System.print("M(%(i))%(sp) = 2 ^ %(i)%(sp) - 1 = %(m)")