user
Definition

A factorion is a natural number that equals the sum of the factorials of its digits.

Example

**145**   is a factorion in base **10** because:

**```
          1! + 4! + 5!   =   1 + 24 + 120   =   145 

```**

It can be shown (see talk page) that no factorion in base **10** can exceed   **1,499,999**.

Task

Write a program in your language to demonstrate, by calculating and printing out the factorions, that:

:   * There are   **3**   factorions in base   **9**
    * There are   **4**   factorions in base **10**
    * There are   **5**   factorions in base **11**
    * There are   **2**   factorions in base **12**     (up to the same upper bound as for base **10**)

See also
:   * **Wikipedia article**
    * **OEIS:A014080 - Factorions in base 10**
    * **OEIS:A193163 - Factorions in base n**
assistant
(formerly Perl 6)

**Works with**: Rakudo version 2019.07.1

```
constant @factorial = 1, |[\*] 1..*;

constant $limit = 1500000;

constant $bases = 9 .. 12;

my @result;

$bases.map: -> $base {

    @result[$base] = "\nFactorions in base $base:\n1 2";

    sink (1 .. $limit div $base).map: -> $i {
        my $product = $i * $base;
        my $partial;

        for $i.polymod($base xx *) {
            $partial += @factorial[$_];
            last if $partial > $product
        }

        next if $partial > $product;

        my $sum;

        for ^$base {
            last if ($sum = $partial + @factorial[$_]) > $product + $_;
            @result[$base] ~= " $sum" and last if $sum == $product + $_
        }
    }
}

.say for @result[$bases];

```

Output:

```
Factorions in base 9:
1 2 41282

Factorions in base 10:
1 2 145 40585

Factorions in base 11:
1 2 26 48 40472

Factorions in base 12:
1 2
```