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 (! |
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) |