組合せ数学において、階乗進法とは順列を数え上げるのに適する、複数の底が混在した位取り記数法である。
定義
階乗進法は複数の底が混在した位取り記数法であり、下からi桁目の仮数が0からi-1、底がiとなる。
ただし、最下位は常に0となるため、省略されることもある。また、下から11桁目以降の桁には10以上の数が入るため、アルファベットが用いられる場合が多い。
以下、この記事中では階乗進法で表記されていることを表すための添字として、"!"を用いることにする。
例えば、323100!は、
- 323100!
- = 3×5! 2×4! 3×3! 1×2! 0×1! 0×0!
- = ((((3×5 2)×4 3)×3 1)×2 0)×1 0
- = 42810
と変換することができる。
異なる記数法への変換方法は階乗進法においても同様に適用できる。例えば、42810を階乗進法に変換するためには、以下のような操作を行えば良い。
この計算によって出たあまりを下からたどって、42810=323100!
また、階乗進法によって任意の整数を一意の小数として表せることは、以下の式から導かれる。
この恒等式は、数学的帰納法によって容易に証明することができる。
順列
整数が階乗進法で表現されている場合、整数0,...,n!−1(または階乗進法でn桁の数)と辞書式順序でのn個の要素の順列の間には自然な写像があり、この写像はレーマー符号と呼ばれている。たとえば n=3 の場合、写像は以下の表の通りとなる
小数
この記数法の拡張として、小数を表すために小数第n位の重みを1/n!とする方法があり、これによって任意の有理数を有限小数で表現できるという特徴がある。この方法で拡張した場合、小数第1位は常に0となる。
以下に一部の変換表を示す。ただし、全て左辺は十進法である。
一部の無理数は、階乗進法に変換したときに特徴的な小数表示を持つ。例えば以下のようなものである。
素数階乗進法
階乗進法によく似た位取り記数法として、素数階乗進法が存在する。これは下からn桁目の重みをとしたものである。
この記数法の一意性は以下の恒等式によって保証される。
ただし、は素数階乗を表す。
関連項目
- 複数の底の混在する記数法
- 広義の記数法
- 位取り記数法


![[Python] 線形計画法についてわかりやすく解説 GeekBlocks](https://bunny-wp-pullzone-tn5yudgj3a.b-cdn.net/wp-content/uploads/2024/09/thumbnail-43538.png)

