1 定義
階乗は、ある自然数に対して、それ以下の正の整数をすべて掛け合わせて得られる値を表す演算である。数学では通常、数の右に感嘆符を付けて表記し、順列や組合せの計算、級数展開などで基礎的な役割を担う。
1.1 自然数の階乗
自然数 n の階乗は、n! と書き、n×(n-1)×(n-2)×…×2×1 と定義される。たとえば 5! は 5×4×3×2×1 となり、結果は 120 である。最小の自然数から順に積を取るため、値は急速に大きくなる。
1.2 記号と読み方
階乗を示す記号は感嘆符「!」であり、通常は「かいじょう」と読む。式の中では、数の後ろに置かれて一つの演算子として働く。視覚的には短い記号だが、含む情報は大きく、組み合わせ的な意味を持つことが多い。
1.3 ゼロの階乗
0! は 1 と定められる。これは一見すると直感に反するが、再帰的な定義や組合せの公式を整合的に保つために必要である。特に、n! を (n-1)! に結びつける関係を n=1 の場合まで途切れなく使うには、この値が自然に現れる。
1.4 負の整数での扱い
負の整数に対する階乗は、通常の意味では定義されない。単純に 1 から始めて掛け算を逆向きに延長すると矛盾が生じるためである。ただし、より広い関数として考えると、ガンマ関数を通じて非正の整数を除く領域に拡張できるが、負の整数点そのものは特異点となる。
2 性質
階乗には、帰納的な定義、単調な増加、素因数の偏り、爆発的な成長といった特徴がある。これらの性質は、計算上の扱いだけでなく、数論や解析でも重要である。
2.1 再帰的定義
階乗は n! = n×(n-1)! という再帰式で表せる。初期値として 0! = 1 を置けば、すべての非負整数に対して一貫した定義になる。この形は、証明やアルゴリズムの記述で便利であり、漸化式の典型例でもある。
2.2 単調増加性
n が大きくなるほど n! も増加し、非負整数の範囲では単調増加する。実際、n+1! は n! に n+1 を掛けたものなので、1 より大きい因子が追加されるたびに値は拡大する。したがって、隣り合う階乗の差はすぐに大きくなる。
2.3 素因数分解との関係
n! には 1 から n までの各整数が含まれるため、多様な素因数が高い累積頻度で現れる。ある素数 p が n! に何回現れるかは、n を p, p², p³, … で割った商の和で求められる。これは素因数の指数を調べる際の基本公式である。
2.4 桁数と増大の速さ
階乗の増大は非常に速く、比較的小さな n でも桁数が急激に増える。桁数は対数を用いて見積もるのが一般的で、スターリングの近似がしばしば用いられる。計算機でも、通常の整数型の範囲をすぐに超えるため、扱いには工夫が必要になる。
3 計算方法
階乗は定義に従えば単純な連続積で求められるが、n が大きくなると計算量や桁数の問題が目立つ。そこで、分割して掛ける方法や、内部表現を意識した実装が用いられる。
3.1 逐次乗算による求め方
最も基本的な方法は、1 から n までを順に掛け合わせる手続きである。手順は明快だが、大きな数を扱うと途中結果が急速に肥大化する。小規模な計算や手計算では有効だが、高精度計算では別の工夫が必要になる。
3.2 効率的な計算法
高速化のためには、単純な順番通りの積だけでなく、掛ける順序や部分積の管理を改善する。これにより、乗算回数の削減や、大きな整数の中間表現の負担軽減が期待できる。
3.2.1 分割統治法
分割統治法では、積の範囲を半分ずつに分け、部分積を再帰的に計算して最後にまとめる。大きさの近い数どうしを掛ける構成になりやすく、効率のよい多倍長乗算と相性がよい。計算機代数でよく使われる考え方である。
3.2.2 連続積の工夫
連続する整数の積をまとめて処理する際は、区間を適切に分けて平衡よく積み上げる方法が有効である。途中で偶数や 5 の因子を先に取り出して整理することもあり、結果として不要な膨張を抑えられる。
3.3 大きな階乗の計算
非常に大きな n では、結果そのものをすべて保持すること自体が負担となる。したがって、桁数だけを求める、近似値を使う、あるいは必要な範囲の情報だけ取り出すといった方法が選ばれる。厳密値の計算には、多倍長整数ライブラリが用いられることが多い。
3.4 計算機による実装上の注意
実装では、整数型の上限を超えるオーバーフローに注意する必要がある。浮動小数点で近似すると、丸め誤差により正確な値を失いやすい。さらに、入力が大きい場合は、時間だけでなくメモリ消費も問題になるため、目的に応じて整数計算、近似計算、ログ表示を使い分ける。
4 一般化と応用
階乗は整数に限らず、連続的な拡張を通じて解析学に接続される。あわせて、数え上げ、積分、確率の式にも現れ、純粋数学と応用数学の両方で利用範囲が広い。
4.1 ガンマ関数との関係
ガンマ関数は、階乗の連続的な一般化として位置づけられる。正の整数 n に対しては Γ(n) = (n-1)! を満たし、階乗の性質をより広い範囲に拡張する役割を持つ。
4.1.1 実数への拡張
ガンマ関数を用いると、非整数の正の実数にも階乗に相当する値を定義できる。これにより、離散的な積としての階乗が、滑らかな関数として扱えるようになる。補間的な意味を持つため、解析の文脈で重宝される。
4.1.2 複素数への拡張
複素数平面でも、ガンマ関数を通じて階乗の拡張が考えられる。ただし、非正の整数では極が現れるため、その点を除外する必要がある。複素解析では、この性質が関数の構造や特殊値の研究に結びつく。
4.2 組み合わせ論での利用
階乗は、順序のある並べ方や、順序を無視した選び方を数える際の基本要素である。多くの公式は、階乗を分母や分子に含む形で表される。
4.2.1 順列の数え上げ
n 個の異なる対象を並べる方法の数は n! で与えられる。最初の位置に n 通り、次に n-1 通りと続くためである。この考え方は、並べ替え問題の出発点として広く使われる。
4.2.2 組合せの公式
n 個から r 個を選ぶ組合せの数は、n! / (r!(n-r)!) で表される。ここでは、選んだ順序を取り除くために階乗が分母に現れる。二項係数の記述でも中心的な役割を果たす。
4.3 解析学での利用
解析学では、階乗は級数展開の係数や微分方程式の解法に登場する。たとえば指数関数や三角関数のテイラー展開では、階乗が分母に現れて収束性を支える。特別関数の定義にも頻繁に使われる。
4.4 確率論と統計での利用
確率論では、試行回数が限られた事象の数え上げに階乗が現れる。統計でも、標本の並べ方や分割の数、離散分布の係数に組み込まれる。これにより、確率モデルの式を簡潔に表現できる。