「二重階乗って、普通の階乗と何が違うの?」
スプレッドシートで数学的な計算をしていると、こんな疑問にぶつかることがありますよね。
普通の階乗は「5 x 4 x 3 x 2 x 1」とすべて掛けますが、二重階乗は「5 x 3 x 1」のように1つおきに掛けます。
この二重階乗を一発で求めてくれるのがFACTDOUBLE関数です。
この記事では基本の書き方からFACT関数との違い、実践的な活用例まで紹介します。
FACTDOUBLE関数とは?
FACTDOUBLE関数(読み方: ファクトダブル関数)は、指定した数値の二重階乗(n!!)を返す関数です。
名前は「factorial(階乗)」+「double(二重)」からきています。
二重階乗とは、nから2ずつ減らしながら掛け算する計算のことです。
たとえば =FACTDOUBLE(7) と書くと「7 x 5 x 3 x 1 = 105」が返ります。
数学では「7!!」と表記します。「!」が2つ付くのがポイントですね。
FACTDOUBLE関数にできることをまとめると、次のとおりです。
- 指定した数値の二重階乗を計算する
- 奇数同士の積(1 x 3 x 5 x …)を求める
- 偶数同士の積(2 x 4 x 6 x …)を求める
- 統計・確率の特殊な公式で使う
NOTE
FACTDOUBLE関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全です。
FACTDOUBLE関数の書き方(構文と引数)
基本構文
=FACTDOUBLE(値)
カッコの中に「値(二重階乗を求めたい数値)」を1つだけ入れます。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | 二重階乗を求めたい数値。0以上の整数を指定する |
FACT関数と同じく引数は1つだけです。小数を指定した場合は、小数点以下が切り捨てられます。
FACTDOUBLE関数の基本的な使い方
奇数の二重階乗
奇数を指定すると、奇数だけを掛け合わせた値が返ります。
=FACTDOUBLE(5)
結果は「15」です。5 x 3 x 1 = 15 ですね。
=FACTDOUBLE(7)
結果は「105」です。7 x 5 x 3 x 1 = 105 です。
=FACTDOUBLE(9)
結果は「945」です。9 x 7 x 5 x 3 x 1 = 945 です。
偶数の二重階乗
偶数を指定すると、偶数だけを掛け合わせた値が返ります。
=FACTDOUBLE(6)
結果は「48」です。6 x 4 x 2 = 48 ですね。
=FACTDOUBLE(8)
結果は「384」です。8 x 6 x 4 x 2 = 384 です。
=FACTDOUBLE(10)
結果は「3840」です。10 x 8 x 6 x 4 x 2 = 3840 です。
セル参照を使う
A1に数値「7」が入っているとします。
=FACTDOUBLE(A1)
結果は「105」です。セル参照を使えば、値を変えるだけで結果が自動更新されますよ。
特殊なケース
0と1の二重階乗はどちらも「1」です。
=FACTDOUBLE(0)
結果は「1」です。
=FACTDOUBLE(1)
こちらも結果は「1」です。数学のルールとして0!! = 1、1!! = 1 と定義されています。
FACT関数との違い
FACTDOUBLE関数とFACT関数は、どちらも「掛け算の繰り返し」ですが、掛ける数の飛ばし方が違います。
| 比較項目 | FACT関数(通常の階乗) | FACTDOUBLE関数(二重階乗) |
|---|---|---|
| 記号 | n! | n!! |
| 計算方法 | nから1ずつ減らして掛ける | nから2ずつ減らして掛ける |
| 5を指定 | 5 x 4 x 3 x 2 x 1 = 120 | 5 x 3 x 1 = 15 |
| 6を指定 | 6 x 5 x 4 x 3 x 2 x 1 = 720 | 6 x 4 x 2 = 48 |
| 主な用途 | 組み合わせ・順列・確率計算 | 統計・物理の特殊計算 |
ポイントは「1つおきに掛けるかどうか」です。
FACT関数はすべての整数を掛けるので値が大きくなりやすいのに対し、FACTDOUBLE関数は半分しか掛けないのでコンパクトな値になります。
2つの関数の関係
実は、通常の階乗は二重階乗2つの積で表せます。
FACT(n) = FACTDOUBLE(n) x FACTDOUBLE(n-1)
たとえば5の階乗で確認してみましょう。
=FACTDOUBLE(5) * FACTDOUBLE(4)
FACTDOUBLE(5) = 15、FACTDOUBLE(4) = 8 なので、15 x 8 = 120 です。
これは =FACT(5) の結果「120」と一致しますね。
通常の階乗は「奇数の積 x 偶数の積」に分解できる、ということです。
FACTDOUBLE関数の実践的な使い方・応用例
偶数の積を求める
1から10までの偶数(2, 4, 6, 8, 10)をすべて掛けた値を求めてみましょう。
=FACTDOUBLE(10)
結果は「3840」です。2 x 4 x 6 x 8 x 10 = 3840 ですね。
手で掛け算を繰り返すよりも、はるかに楽に求められます。
奇数の積を求める
同様に、1から9までの奇数(1, 3, 5, 7, 9)の積も求められます。
=FACTDOUBLE(9)
結果は「945」です。1 x 3 x 5 x 7 x 9 = 945 です。
FACT関数と組み合わせて偶数の積を計算する
偶数の二重階乗は、FACT関数を使って別の方法でも求められます。
n!! = 2^(n/2) x (n/2)! という公式を使います。
たとえば10の二重階乗は次のように計算できます。
=2^(10/2) * FACT(10/2)
2^5 = 32、FACT(5) = 120 なので、32 x 120 = 3840 です。
FACTDOUBLE(10) と同じ結果になりますね。公式の意味を理解したいときに試してみてください。
組み合わせ関数と組み合わせて使う
COMBIN関数やCOMBINA関数で求めた組み合わせの数と、FACTDOUBLE関数を組み合わせた計算もできます。
たとえば、統計学で使われるウォリスの公式は、円周率(π)を二重階乗で近似する有名な公式です。
=FACTDOUBLE(10)^2 / (FACTDOUBLE(11) * FACTDOUBLE(9)) * 2 * 11
このように、二重階乗は数学的な公式の中で活躍する場面があります。
よくあるエラーと対処法
FACTDOUBLE関数で発生しやすいエラーをまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
| #NUM! | 負の数を指定した(例: FACTDOUBLE(-1)) | 0以上の整数を指定する |
| #VALUE! | 引数に文字列が入っている | セル参照先が数値かどうか確認する |
| #ERROR! | 構文ミス(カッコ忘れ等) | 数式の入力内容を見直す |
負の数を指定したとき
もっとも多いエラーです。二重階乗は0以上の整数でしか定義されていません。
=FACTDOUBLE(-3)
この数式は#NUM!エラーになります。マイナスの値が入っていないか確認してみてください。
引数に小数を指定したとき
小数を指定してもエラーにはなりません。小数点以下が切り捨てられて計算されます。
=FACTDOUBLE(7.9)
この数式は =FACTDOUBLE(7) と同じ結果で「105」を返します。
まとめ
FACTDOUBLE関数は、指定した数値の二重階乗(n!!)を求める関数です。
ポイントを整理します。
- 構文は
=FACTDOUBLE(値)の1引数。nから2ずつ減らしながら掛けた値を返す - 奇数を指定すると奇数だけの積、偶数を指定すると偶数だけの積になる
- 0と1の二重階乗はどちらも1。負の数は#NUM!エラーになる
- FACT関数はすべて掛ける通常の階乗、FACTDOUBLE関数は1つおきに掛ける二重階乗
- FACT(n) = FACTDOUBLE(n) x FACTDOUBLE(n-1) の関係が成り立つ
- 統計・確率の特殊な公式で活躍する場面がある
まずは =FACTDOUBLE(7) で「7 x 5 x 3 x 1 = 105」から試してみてください。
