階乗計算
計算結果
階乗
- 桁数
- 3
- 末尾の0の個数
- 1
階乗計算は、1からnまでの整数をすべて掛け合わせ、その積と、それがどれだけ大きくなったかを言う2つの読み値を返します。答えが何桁か、そして末尾の0がいくつあるかです。5の階乗は120で、3桁、末尾の0は1つになります。結果はすぐに読める範囲を離れ、21を超えると主結果は指数表記に切り替わりますが、桁数と末尾の0は正確なままです。どちらも印字された値から文字を数えるのではなく式から出るからです。0の階乗は空の積である1で、170がここで受け付ける最大の入力です。171の階乗は倍精度が保持できる範囲を超えるので、無限大で答えるのではなく断ります。
0から12までの階乗
| n | 階乗 | 桁数 | 末尾の0の個数 |
|---|---|---|---|
| 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 0 |
| 2 | 2 | 1 | 0 |
| 3 | 6 | 1 | 0 |
| 4 | 24 | 2 | 0 |
| 5 | 120 | 3 | 1 |
| 6 | 720 | 3 | 1 |
| 7 | 5040 | 4 | 1 |
| 8 | 40320 | 5 | 1 |
| 9 | 362880 | 6 | 1 |
| 10 | 3628800 | 7 | 2 |
| 11 | 39916800 | 8 | 2 |
| 12 | 479001600 | 9 | 2 |
最初の13個の階乗と、それぞれに添えた2つの読み値です。行がここにあるのは成長を見えるようにするためで、値は7行目で1,000を、12行目で1億を超えますが、桁数は1つずつ増え、末尾の0は数に5が含まれるまでゼロのままです。最後の列を上から読むと、5、10、12が効いて11が効かない理由が見えます。どのセルもただの数なので、この表はサイトが提供する10の言語で同じです。
公式
n! = 1 × 2 × … × n:桁数 = ⌊log₁₀(n!)⌋ + 1:末尾の0の個数 = ⌊n/5⌋ + ⌊n/25⌋ + ⌊n/125⌋ + …
- n
- 階乗を知りたい数で、0から170までの整数です。積が1からnまで走るので、因数の個数でもあります。上限は表示上の都合ではありません。171の階乗は倍精度が表せる最大の値を超えるので、170より上の入力には返せる答えがありません。
- n!
- 階乗そのもので、1からnまでの整数すべての積です。指数曲線よりも速く育ちます。5の階乗は120ですが、10の階乗はすでに3,628,800です。値が100万を超えると印字される答えは指数表記に変わり、100桁の数字を並べずに大きさを読み取れるようにします。
- 桁数
- 階乗が10進数で何桁になるかです。印字された値の文字を数えるのではなく対数を足し上げて計算するので、印字された階乗が有効数字7桁しか運ばない範囲の上端でも正しいままです。
- 末尾の0の個数
- 階乗の末尾に並ぶ0の個数です。末尾の0には10が必要で、10には2と5が1つずつ要ります。階乗の中では2のほうがはるかに多く現れるので、個数は5だけで決まります。5の倍数、25の倍数、125の倍数が、それぞれ1つずつ足していきます。
値そのものが答えであるときに使います。ある集合を並べる方法が何通りあるか、級数の1項、積の大きさなどです。n個からr個を選ぶには、組み合わせと順列のページが階乗どうしを掛けるのではなく割ります。
計算例
5の階乗
- 上へ掛けていく:1 × 2 = 2
- 2 × 3 = 6
- 6 × 4 = 24
- 24 × 5 = 120
- 120は3文字で末尾が0ひとつなので、2つの読み値は3と1になる
3つの読み値をすべて目で確かめられるいちばん小さな場合です。積は最後まで読める長さで、桁数も末尾の0もそれを見れば分かります。このページがこの値から始まるのはまさにそのためです。
読み値が指数表記に変わる境目
- 1から20まで掛けると、ちょうど2,432,902,008,176,640,000になる
- それは19桁なので、桁数の読み値は19
- そのうち4つは末尾の0で、5、10、15、20の中にある5がそれを説明する
- パネルはその積を19桁の数そのものではなく2.432902 × 10¹⁸として印字する
印字された値が正確な値でなくなる地点です。表示されるのは2つの読み値が記述しているのと同じ数の先頭7桁の有効数字なので、短く印字できるのが1つだけでも3つの出力は一致します。21未満なら印字される積は正確です。
100の階乗が末尾に並べる0の個数
- 100までの5の倍数を数える:20個
- 2つ目の5を持つ25の倍数を足す:4個
- 125の倍数を足す——125は100を超えているので無し
- 20 + 4 = 24個の末尾の0
- 階乗そのものは158桁で、9.332622 × 10¹⁵⁷として印字される
ここで読める事実は0の個数のほうで、それは数からではなく5だけから導かれます。100の階乗は158桁あるので、全部を印字したとしてもその末尾を目で確かめることはできません。
適用限界
受け付けるのは0から170までの整数だけです。負の入力は断ります。階乗は負の数に対して定義されていないからです。階乗をほかの数へ拡張するガンマ関数も、負の整数すべてに極を持ちます。小数も同じ理由で断ります。170を超えると積が倍精度であふれて無限大になってしまうので、その入力を名指しで拒否します。21を超えると印字される階乗は正確な整数ではなく指数表記による近似になりますが、桁数と末尾の0はそれに関係なく正確なままで、その2つが合わせて、すべての桁は示されていない数の大きさを記述します。このページは二項係数や順列を直接計算しません。それらのページが組み立てられるもとになる階乗を渡すだけです。
よくある質問
- 階乗とは何か
- 与えた数までの整数を1から順にすべて掛けた積です。5の階乗は1 × 2 × 3 × 4 × 5で120になります。その個数の異なるものを並べる方法の数を数えているので、測定ではなく確率や数え上げの問題に出てきます。
- 0の階乗が1になるのはなぜか
- 空の積だからです。掛けるものが何もなく、積を変えない値が1です。この約束事は勝手な取り決めではありません。数え上げの解釈を成り立たせ(何も並べない方法はちょうど1通り)、n! = n × (n−1)!という漸化式をn = 1でも正しいままに保つのはこれです。
- 170で止まるのはなぜか
- 171の階乗が倍精度浮動小数点数で表せる最大の数を超えるので、計算が無限大を返すからです。この上限は表示についての選択ではありません。170より上の入力には表せる答えがないのです。170の階乗はそれ自体およそ7.26 × 10³⁰⁶で、307桁の数です。
- 末尾の0はどう数えているのか
- 階乗の中にある5の因数を数えています。末尾の0には10が要り、10には2と5が1つずつ要ります。2はあり余っているので、決めるのは5のほうです。5の倍数が1つ、25の倍数がもう1つ、125の倍数がさらに1つ、というぐあいに足していきます。100の階乗なら20 + 4 = 24個です。
- 階乗が指数表記で印字されるのはなぜか
- 21を超えると、結果パネルが実用的に見せられるより桁が多くなるからです。100の階乗は158桁あります。指数表記は大きさを読み取れるままに保ちます。正確な整数は他の2つの読み値が記述しているもので、桁数がその長さを、末尾の0がその終わり方を教えてくれます。
- 大きな階乗は何桁になるのか
- 桁数の読み値が、このページが受け付けるどの入力でもそれに正確に答えます。印字された文字列を測るのではなく対数を足し上げて出すので、印字された値が近似でも精度を失いません。桁数はつねに末尾の0の個数より1以上多くなります。
参考文献
- Factorial — 定義、0!を1にする空の積の約束事、そして値が育つ速さ — Wolfram MathWorld (United States)
- A000142 — 階乗の数列(1、1、2、6、24、120…)を登録済みの数列として収録したもの。倍精度が保持できる範囲をはるかに超える正確な値付き — OEIS Foundation (United States)
- Combination — 二項係数。1つの階乗を他の2つで割ったものとして書かれ、階乗が最もよく必要になる場所 — Wolfram MathWorld (United States)