Tool to calculate the Cantor expansion of a number (sum of factorial), thanks to its representation in factorial base.
Cantor Expansion - dCode
Tag(s) : Arithmetics
dCode is free and its tools are a valuable help in games, maths, geocaching, puzzles and problems to solve every day!
A suggestion ? a feedback ? a bug ? an idea ? Write to dCode!
The Cantor Expansion of a natural number $ n $ is a sum of the form $$ n = (k_m)m! + (k_{m-1})(m-1)! + \cdots + k_{2}2! + k_{1}1! $$ with integers $ k_i $ such as $ 0 \leq k_i \leq i $
Example: 12 = 2*3! + 0*2! + 0*1!
This is the explicit sum of the factor base of the number $ n $.
Start by converting the number to a factorial basis (by performing successive divisions of $ n $ by $ i $ for the numbers from $ 1 $ to $ n $, as long as the quotient of the Euclidean division is non-zero) and add figures (in factorial basis) obtained by multiplying them by the corresponding factorial.
Example: In base 10, $ 123 $ can be decomposed as $ 1 \times 100 + 2 \times 10 + 3 \times 1 $
Example: In factorial base, $ 234_{10} = 14300_{!} = 1 \times 5! + 4 \times 4! + 3 \times 3! + 0 \times 2! + 0*1! $
To code the conversion of a decimal number into a factorial base, here is an algorithm function decimal2cantor(x) {
n = 1
a = []
while (x != 0) {
a[n] = x mod (n+1)
x = (x-a[n])/(n+1)
n++
}
return a[n]
}
Cantor's expansion can be deduced by a[n]*n! + a[n−1]*(n-1)! + ... + a[2]*2! + a[1]*1!
To code the conversion of a number written in factorial base into a decimal number, here is an algorithm:function cantor2decimal(a[n]) {
x = 0
for i=n to 1 {
x = x + a[i]
x = i*x
}
return x
}
dCode retains ownership of the "Cantor Expansion" source code. Except explicit open source licence (indicated Creative Commons / free), the "Cantor Expansion" algorithm, the applet or snippet (converter, solver, encryption / decryption, encoding / decoding, ciphering / deciphering, breaker, translator), or the "Cantor Expansion" functions (calculate, convert, solve, decrypt / encrypt, decipher / cipher, decode / encode, translate) written in any informatic language (Python, Java, PHP, C#, Javascript, Matlab, etc.) and all data download, script, or API access for "Cantor Expansion" are not public, same for offline use on PC, mobile, tablet, iPhone or Android app!
Reminder : dCode is free to use.
The copy-paste of the page "Cantor Expansion" or any of its results, is allowed (even for commercial purposes) as long as you credit dCode!
Exporting results as a .csv or .txt file is free by clicking on the export icon
Cite as source (bibliography):
Cantor Expansion on dCode.fr [online website], retrieved on 2024-12-03,