コンテンツへスキップ
uencoder

Factorial

階乗 n! = n×(n-1)×...×1 は順列と組合せの基礎である。極めて速く増大し、20! はすでに 64 ビット整数の範囲を超える。

目的

n 要素の順列を数え上げる、組合せ論の基礎。

メカニズム

n! = n×(n-1)!、0!=1。スターリングの近似:n! ≈ √(2πn)(n/e)^n。大きな n には BigInteger が必要。ガンマ関数は階乗を非整数へ拡張する。対数階乗はオーバーフローを避けるため lgamma を使う。

ユースケース

  • 順列とコンビネーションの計数
  • 確率・統計(ポアソン分布)
  • テイラー級数の係数
  • ガンマ関数

例

  • 入力
    5=5×4×3×2×1=120
    Output
    120

    Number of permutations of 5 elements

よくあるエラー

Factorial overflow for large n
Use BigInteger or log-factorials

関連用語

関連ツール

References