数学の問題を解くとき、組み合わせや確率の計算で頻繁に登場するのが階乗(!)の計算です。
「10!はどうやって計算すればいいの?」「大きな数の階乗を効率よく求めたい」という疑問を持っている方も多いでしょう。
本記事では、階乗の基本的な計算方法から、手計算・電卓・エクセル・プログラミング・計算サイトまで、あらゆる手段を使った求め方を詳しく解説します。
また、順列・組み合わせへの応用計算も含め、試験・業務・プログラミングで役立つ実用的な知識を体系的にお伝えします。
ぜひ最後までお読みいただき、階乗計算を完全にマスターしてください。
階乗の計算方法の基本:定義から計算式まで
それではまず、階乗の基本的な計算方法と計算式の使い方について解説していきます。
階乗の計算は非常にシンプルな概念に基づいていますが、正確な手順と注意点を理解することが計算ミスを防ぐ上で重要です。
定義の確認から出発し、具体的な計算手順まで丁寧に解説します。
階乗の基本計算式と手順
階乗n!の計算は、nから始めて1まで順番に掛け合わせていくというシンプルな手順で行います。
階乗の基本計算手順:
n!= n × (n−1) × (n−2) × … × 2 × 1
7!の計算例(ステップごと):
ステップ1:7 × 6 = 42
ステップ2:42 × 5 = 210
ステップ3:210 × 4 = 840
ステップ4:840 × 3 = 2,520
ステップ5:2,520 × 2 = 5,040
ステップ6:5,040 × 1 = 5,040
よって 7!= 5,040
手計算の際は途中の計算結果を必ずメモしながら進めることが、計算ミスを防ぐ最も確実な方法です。
1を掛けることは値を変えませんが、手順として省かずに最後まで実行することで計算の正確性を確認できます。
階乗の計算における注意点と効率化のコツ
手計算で階乗を求める際の主な注意点とコツを整理します。
第一のコツは既知の階乗値を活用することです。
よく使う階乗の値(5!=120、7!=5040、10!=3628800など)を記憶しておくと、上位の階乗を素早く計算できます。
既知の値を使った効率的な計算例:
8!を求める場合:
7!=5040 を知っていれば
8!= 8 × 7!= 8 × 5040 = 40,320
ワンステップで計算完了!
12!を求める場合:
10!=3,628,800 を知っていれば
12!= 12 × 11 × 10!
= 132 × 3,628,800
= 479,001,600
第二のコツは階乗の比(商)を利用することです。
順列・組み合わせの計算では、階乗同士の割り算が多く登場します。
このとき、分子と分母の階乗を完全に展開してから割り算するのではなく、共通部分をキャンセルすることで計算量を大幅に削減できます。
順列・組み合わせ計算における階乗の効率的な使い方
試験や実務で最も多く使われる階乗計算が、順列nPrと組み合わせnCrの計算です。
効率的な順列・組み合わせの計算法:
10P3(10個から3個を選んで並べる)の効率的計算:
公式:10P3 = 10!/7!
展開せずに:10!/7!= 10×9×8×(7!)/(7!) = 10×9×8 = 720
分子の7!と分母の7!がキャンセルされ、大きな数の計算が不要になります。
10C3(10個から3個を選ぶ)の効率的計算:
公式:10C3 = 10!/(3!×7!)
展開せずに:(10×9×8)/(3×2×1) = 720/6 = 120
分子と分母を約分しながら計算すると計算量が最小になります。
このような「共通部分のキャンセル」を意識することで、手計算でも比較的大きな順列・組み合わせを素早く計算することが可能です。
電卓・計算機・スマートフォンでの階乗計算
続いては、電卓・計算機・スマートフォンを使った階乗計算の方法を確認していきます。
手計算では大きな数の階乗が扱いにくいため、実用場面では電卓や計算ツールを活用することが多いです。
各種ツールの使い方と注意点を解説します。
関数電卓での階乗計算
関数電卓(カシオfx-991・シャープEL-W531など)では、「n!」キーまたは「x!」キーによって直接階乗を計算することができます。
一般的な操作手順は「数値を入力→[SHIFT]または[2nd]キー→[x!]または[n!]キー→[=]で結果表示」です。
関数電卓で計算可能な最大の階乗は機種によって異なりますが、多くの場合69!(約1.71×10⁹⁸)または170!(約7.26×10³⁰⁶)程度が上限です。
| ツール | 操作方法 | 計算可能な最大n | 特徴 |
|---|---|---|---|
| 関数電卓(fx-991) | n→SHIFT→x! | 69まで | 手軽・持ち運び可能 |
| Excel(FACT関数) | =FACT(n) | 170まで | 表計算に組み込み可能 |
| Python math.factorial | math.factorial(n) | 制限なし(任意精度) | 大きな数も正確に計算 |
| Wolfram Alpha | “100!”と入力 | 事実上無制限 | 超大きな数・式の展開 |
| Google検索 | “10!”と検索 | 170程度 | 手軽・ブラウザで即計算 |
計算サイト・オンラインツールでの階乗計算
インターネット上には階乗を手軽に計算できるオンラインツールが多数存在します。
Wolfram Alpha(wolframalpha.com)は最も高機能な計算サイトのひとつであり、検索ボックスに「100!」と入力するだけで正確な値・桁数・素因数分解など詳細な情報を即座に表示してくれます。
Googleの検索バーに「10!」と入力するだけでも電卓機能が起動し、結果が表示されます。
スマートフォンのiOS・Androidに内蔵された計算機アプリも横向きにすると関数電卓モードになり、「n!」ボタンで階乗計算が可能です。
これらのオンラインツールは特にn>20以上の大きな階乗を計算する場合に特に便利であり、手計算や通常の電卓では扱いにくい大きな値も瞬時に求めることができます。
エクセルを使った階乗・順列・組み合わせの計算
Microsoft ExcelやGoogleスプレッドシートを使った実用的な計算方法を整理します。
Excelでの階乗・順列・組み合わせ計算:
階乗:=FACT(n)
=FACT(7) → 5040
=FACT(10) → 3628800
順列(nPr):=PERMUT(n, r)
=PERMUT(10, 3) → 720
組み合わせ(nCr):=COMBIN(n, r)
=COMBIN(10, 3) → 120
対数階乗(大きな数向け):=FACTDOUBLE(n) は二重階乗
大きなFACTの自然対数:=GAMMALN(n+1)
=GAMMALN(101) → ln(100!) ≈ 363.74(100!の自然対数)
Excelで扱える最大のFACT関数の引数は170であり、FACT(171)以上はエラー(#NUM!)になります。
170以上の階乗の対数値が必要な場合はGAMMALN関数(ガンマ関数の自然対数)を活用することで、直接的な数値計算の限界を回避することができます。
プログラミングを使った階乗計算の実装方法
続いては、プログラミング言語を使って階乗を計算・実装する方法を確認していきます。
プログラミングの学習や実務でも階乗はよく登場するため、効率的な実装方法を把握しておくことが重要です。
Python・JavaScript・Javaなど代表的な言語での実装例を紹介します。
Pythonでの階乗計算(再帰・ループ・ライブラリ)
Pythonは階乗計算に最適な言語のひとつであり、任意精度整数を標準でサポートしているため、どんなに大きな階乗でも正確に計算できます。
Pythonでの階乗計算の三つの方法:
①標準ライブラリを使う方法(最推奨):
import math
print(math.factorial(10)) # 3628800
print(math.factorial(100)) # 93桁の整数
②ループを使う方法:
def factorial_loop(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
③再帰関数を使う方法:
def factorial_recursive(n):
if n == 0 or n == 1:
return 1
return n * factorial_recursive(n – 1)
実務・学習用途ではmath.factorial()が最もシンプルで高速なため第一選択です。
アルゴリズムの学習目的では再帰関数の実装が再帰的定義の理解に直結するため、学習段階では再帰版の実装を自分で書いてみることが推奨されます。
JavaScriptでの階乗計算
Webブラウザ上で動作するJavaScriptでの階乗計算の実装例を紹介します。
JavaScriptでの階乗計算:
// ループによる実装
function factorial(n) {
if (n === 0 || n === 1) return 1;
let result = 1;
for (let i = 2; i <= n; i++) {
result *= i;
}
return result;
}
console.log(factorial(10)); // 3628800
// BigIntを使った大きな数への対応
function factorialBig(n) {
let result = 1n;
for (let i = 2n; i <= BigInt(n); i++) {
result *= i;
}
return result;
}
console.log(factorialBig(50)); // 50!の正確な値
JavaScriptは通常の数値(Number型)では53ビット整数の精度制限があるため、20!以上の正確な整数値にはBigInt型の使用が推奨されます。
まとめ
本記事では、階乗の基本的な計算方法・手計算のコツ・電卓・エクセル・計算サイト・プログラミングによる計算方法まで、実用的な内容を幅広く解説しました。
階乗計算の基本はnから1まで順番に掛け合わせるというシンプルな操作ですが、共通部分のキャンセルや既知の値の活用によって大幅に効率化できます。
Excelのfact関数・PythonのMath.factorial()・Wolfram Alphaなど多様なツールを状況に応じて使い分けることで、どんなに大きな階乗も素早く正確に求めることができます。
順列・組み合わせ・確率・テイラー展開など多くの場面で階乗計算が求められるため、本記事の内容をしっかりとマスターして実践に活かしてください。