Let be a natural number. For a base , we define the sum of the factorial of the digits of , , to be the following:
where is the number of digits in the number in base , is the factorial of and
is the value of the th digit of the number. A natural number is a -factorion if it is a fixed point for , i.e. if . and are fixed points for all bases , and thus are trivial factorions for all , and all other factorions are nontrivial factorions.
For example, the number 145 in base is a factorion because .
For , the sum of the factorial of the digits is simply the number of digits in the base 2 representation since .
A natural number is a sociable factorion if it is a periodic point for , where for a positive integer, and forms a cycle of period . A factorion is a sociable factorion with , and a amicable factorion is a sociable factorion with .
All natural numbers are preperiodic points for , regardless of the base. This is because all natural numbers of base with digits satisfy . However, when , then for , so any will satisfy until . There are finitely many natural numbers less than , so the number is guaranteed to reach a periodic point or a fixed point less than , making it a preperiodic point. For , the number of digits for any number, once again, making it a preperiodic point. This means also that there are a finite number of factorions and cycles for any given base .
The number of iterations needed for to reach a fixed point is the function's persistence of , and undefined if it never reaches a fixed point.
Factorions for SFDb
b = (k − 1)!
Let be a positive integer and the number base . Then:
deffactorial(x:int)->int:total=1foriinrange(0,x):total=total*(i+1)returntotaldefsfd(x:int,b:int)->int:"""Sum of the factorial of the digits."""total=0whilex>0:total=total+factorial(x%b)x=x//breturntotaldefsfd_cycle(x:int,b:int)->List[int]:seen=whilexnotinseen:seen.append(x)x=sfd(x,b)cycle=whilexnotincycle:cycle.append(x)x=sfd(x,b)returncycle