階乘計算器(n!・排列nPr・組合nCr)
精確計算非負整數n的階乘n!。同時支援排列(nPr)與組合(nCr),使用BigInt實現無位數限制的精確整數計算。附帶0〜20的階乘速查表。
0〜20 的階乘速查表
彙總了0!到20!數值的一覽表。20!已經是19位數。
| n | n! |
|---|---|
| 0 | 1 |
| 1 | 1 |
| 2 | 2 |
| 3 | 6 |
| 4 | 24 |
| 5 | 120 |
| 6 | 720 |
| 7 | 5,040 |
| 8 | 40,320 |
| 9 | 362,880 |
| 10 | 3,628,800 |
| 11 | 39,916,800 |
| 12 | 479,001,600 |
| 13 | 6,227,020,800 |
| 14 | 87,178,291,200 |
| 15 | 1,307,674,368,000 |
| 16 | 20,922,789,888,000 |
| 17 | 355,687,428,096,000 |
| 18 | 6,402,373,705,728,000 |
| 19 | 121,645,100,408,832,000 |
| 20 | 2,432,902,008,176,640,000 |
階乘、排列與組合
階乘 n! 是把1到n的所有整數相乘所得的值,表示把n個事物排成一列的排法總數。5! = 120、10! = 3,628,800,n只要稍微增大,數值便會爆炸式增長。到20!已超過18位數,普通的浮點數已無法精確表示。
本工具使用 BigInt 計算,位數不設上限,給出嚴格的整數值。除階乘外,還支援排列 nPr(從n個中取r個並加以排列的情形數)與組合 nCr(從n個中取r個的情形數,不計順序)。兩者的關係為 nPr = n! ÷ (n−r)!、nCr = n! ÷ (r! × (n−r)!),唯一的差別就在於是否區分排列的順序。並附有0~20的階乘速查表。
計算的步驟
- 選擇計算的種類 從階乘(n!)、排列(nPr)、組合(nCr)三個分頁中選擇。
- 輸入 n 0以上、10,000以下的整數。上限是出於計算量的考量。
- 輸入 r(排列與組合時) 請輸入0以上、不超過n的整數。
- 查看結果 即使位數很多也會完整顯示為嚴格的整數,不作省略。
用好本工具的小技巧
- 階乘(n!)是1到n所有整數的連乘積。例如:5! = 5×4×3×2×1 = 120。特別規定 0! = 1。
- 排列(nPr)表示從n個不同元素中選出r個並「排序」的方法數。由於要區分順序,其值總是不小於對應的組合數。例如:5P2 = 5×4 = 20。
- 組合(nCr)表示從n個不同元素中「選出」r個(不區分順序)的方法數。例如:5C2 = 10(將5P2 = 20除以2個元素的排列方式數2!=2得到)。
- 階乘增長極其迅速,20!已達19位數,100!更是高達158位。本工具採用BigInt,即使n很大也能精確計算,無誤差。
- 若n過大(超過10,000),出於計算成本考慮會提示錯誤,這是為防止瀏覽器卡死而設定的實用上限。
這些情境會用到
求解機率問題
可用於核對抽籤、牌型組合等求情形數的題目。
計數排法總數
座位安排、賽程配對等實務上的計數也用得上。
求二項式係數
nCr 正是二項式定理的係數,可直接查看巴斯卡三角形中的數值。
核對程式的計算
把自寫的階乘函式在較大 n 下的結果與嚴格值比對,確認有無溢位。
階乘相關的術語
- 階乘(n!)
- 從1到n的整數之積。規定 0! = 1(依據空積為1的約定)。
- 排列(nPr)
- 從n個中取r個並加以排列的情形數,由 n! ÷ (n−r)! 求得。
- 組合(nCr)
- 從n個中取出r個的情形數,不區分順序,由 n! ÷ (r! × (n−r)!) 求得。
- 二項式係數
- 展開 (a+b)^n 時各項的係數,與 nCr 相同。
- BigInt
- JavaScript 中不受位數限制地處理整數的型別。普通數值型別超過2^53後便會失去精確性。
- 斯特林近似
- 在 n 較大時近似 n! 的公式,用於不需要嚴格值的場合。
常見問題
閒話 ― 階乘符號「!」為什麼是感嘆號
表示階乘的符號「!」據說是1808年法國數學家克里斯蒂安·克蘭普(Christian Kramp)在其著作中引入的。在此之前,不同數學家各自使用五花八門的表示法,並無統一標準。關於克蘭普選擇這一符號的原因說法不一,但流傳較廣的說法是,它表達了對階乘數值急劇增長的「驚歎」之情。
階乘的急速增長也體現在斯特林近似公式(n! ≈ √(2πn)(n/e)ⁿ)中,該公式被廣泛用於統計學、機率論、組合數學等領域的近似計算。事實上,對於精確計算n!都十分困難的巨大n值,這一近似公式在實際應用中發揮著重要作用。
排列、組合的思想是解決許多日常機率問題的基礎,例如彩票中獎機率的計算,以及一副撲克牌的洗牌方式數量(52張撲克牌的排列方式共有52!種,約8×10⁶⁷種)。組合數nCr也出現在「帕斯卡三角形」的每一行數字中,並與二項式定理((a+b)ⁿ的展開)密切相關。