Factorions: Difference between revisions

(→‎{{header|Ruby}}: Added Ruby)
Line 621:
Factorians for base 12: [1, 2]
</pre>
 
=={{header|Nim}}==
Note that the library has precomputed the values of factorial, so there is no need for caching.
<lang Nim>from math import fac
from strutils import join
 
iterator digits(n, base: Natural): Natural =
## Yield the digits of "n" in base "base".
var n = n
while true:
yield n mod base
n = n div base
if n == 0: break
 
func isFactorion(n, base: Natural): bool =
## Return true if "n" is a factorion for base "base".
var s = 0
for d in n.digits(base):
inc s, fac(d)
result = s == n
 
func factorions(base, limit: Natural): seq[Natural] =
## Return the list of factorions for base "base" up to "limit".
for n in 1..limit:
if n.isFactorion(base):
result.add(n)
 
 
for base in 9..12:
echo "Factorions for base ", base, ':'
echo factorions(base, 1_500_000 - 1).join(" ")</lang>
 
{{out}}
<pre>Factorions for base 9:
1 2 41282
Factorions for base 10:
1 2 145 40585
Factorions for base 11:
1 2 26 48 40472
Factorions for base 12:
1 2</pre>
 
=={{header|OCaml}}==
Anonymous user