Magnanimous numbers: Difference between revisions

Content added Content deleted
m (→‎{{header|Wren}}: Library name change.)
(→‎{{header|Wren}}: Now uses wren-math module.)
Line 790: Line 790:
=={{header|Wren}}==
=={{header|Wren}}==
{{libheader|Wren-fmt}}
{{libheader|Wren-fmt}}
{{libheader|Wren-math}}
{{trans|Go}}
{{trans|Go}}
<lang ecmascript>import "/fmt" for Conv, Fmt
<lang ecmascript>import "/fmt" for Conv, Fmt
import "/math" for Int

var isPrime = Fn.new { |n|
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
}

var isMagnanimous = Fn.new { |n|
var isMagnanimous = Fn.new { |n|
if (n < 10) return true
if (n < 10) return true
Line 813: Line 801:
var q = (n/p).floor
var q = (n/p).floor
var r = n % p
var r = n % p
if (!isPrime.call(q + r)) return false
if (!Int.isPrime(q + r)) return false
if (q < 10) break
if (q < 10) break
p = p * 10
p = p * 10
Line 819: Line 807:
return true
return true
}
}

var listMags = Fn.new { |from, thru, digs, perLine|
var listMags = Fn.new { |from, thru, digs, perLine|
if (from < 2) {
if (from < 2) {
Line 839: Line 827:
}
}
}
}

listMags.call(1, 45, 3, 15)
listMags.call(1, 45, 3, 15)
listMags.call(241, 250, 1, 10)
listMags.call(241, 250, 1, 10)