

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


Declare main()
 
If OpenConsole() : main() : Else : End 1 : EndIf
Input() : End
 
Procedure main()
  Define.i n,b,d,i,j,sum
  Dim fact.i(12)
 
  fact(0)=1
  For n=1 To 11 : fact(n)=fact(n-1)*n : Next
 
  For b=9 To 12
    PrintN("The factorions for base "+Str(b)+" are: ")
    For i=1 To 1500000-1
      sum=0 : j=i
      While j>0
        d=j%b : sum+fact(d) : j/b
      Wend
      If sum=i : Print(Str(i)+" ") : EndIf
    Next
    Print(~"\n\n")
  Next
EndProcedure