계승(팩토리얼)계산기(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의 계승 조견표도 함께 있습니다.

계산하는 순서

  1. 계산의 종류를 고릅니다 계승(n!)·순열(nPr)·조합(nCr) 탭에서 고릅니다.
  2. n을 입력합니다 0 이상 10,000 이하의 정수입니다. 상한은 계산량의 사정에 따른 것입니다.
  3. r을 입력합니다(순열·조합의 경우) 0 이상 n 이하의 정수를 입력합니다.
  4. 결과를 확인합니다 자릿수가 많은 값도 생략 없이 엄밀한 정수로 표시됩니다.

더 잘 활용하기 위한 팁

  • 계승(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!을 근사하는 공식입니다. 엄밀값이 필요 없는 장면에서 쓰입니다.

자주 묻는 질문

0! = 1은 수학적 관례로 정의되어 있습니다. 공집합(아무것도 선택하지 않음)을 나열하는 방법은 1가지(아무것도 하지 않는다는 1가지 방법)라고 생각하면 자연스러우며, 계승의 성질 n! = n × (n-1)!이 n=1에서도 성립하도록 하기 위해 필요한 정의이기도 합니다.

순열(nPr)은 「골라서 나열하는」 경우의 수로 순서를 구분합니다(AB와 BA는 다름). 조합(nCr)은 「고르기만」 하며 순서를 구분하지 않습니다(AB와 BA는 같음). 따라서 항상 nCr ≤ nPr이 성립하며, nCr = nPr ÷ r!의 관계가 있습니다.

10,000까지의 정수를 지원합니다. 10,000!은 35,000자리를 넘는 거대한 수가 되며, 그 이상은 표시・계산 비용 문제로 브라우저 동작이 느려질 수 있어 상한을 두었습니다.

순열・조합 계산은 물론, 확률론(주사위나 트럼프 카드의 조합), 통계학(이항분포・포아송분포의 계산식), 테일러 전개(eˣ 등의 급수 전개에 계승이 등장)등 수학의 다양한 분야에서 기초적인 역할을 합니다.
툴군

여담 ― 계승 기호 「!」는 왜 느낌표가 되었을까

계승을 나타내는 「!」 기호는 1808년 프랑스 수학자 크리스티안 크람프(Christian Kramp)가 저서에서 도입했다고 알려져 있습니다. 그 이전에는 수학자마다 각자 다른 표기법을 사용했고 통일된 기호가 없었습니다. 크람프가 이 기호를 선택한 이유에는 여러 설이 있지만, 계승 값이 급격히 커지는 것에 대한 「놀라움」을 표현했다는 설이 잘 알려져 있습니다.

계승의 급격한 증가는 스털링 근사식(n! ≈ √(2πn)(n/e)ⁿ)으로도 알려져 있으며, 통계학・확률론・조합론 등 폭넓은 분야에서 근사 계산에 활용됩니다. 실제로 n!을 정확히 계산하기 어려울 만큼 큰 n에 대해서는 이 근사식이 실용적으로 중요한 역할을 합니다.

순열・조합의 개념은 복권 당첨 확률 계산이나 트럼프 카드의 셔플 방법 수(52장의 트럼프 카드를 나열하는 방법은 52!가지, 약 8×10⁶⁷가지)등 일상적인 확률 문제를 푸는 기초가 됩니다. 조합 수 nCr은 「파스칼의 삼각형」의 각 행의 숫자로도 나타나며, 이항정리((a+b)ⁿ의 전개)와도 밀접하게 관련되어 있습니다.