UnisquadsU
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

팩토리얼 (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.26 22:55

팩토리얼

정의

1부터 양의 정수 n까지의 모든 정수를 곱한 값

표기

n!

관련 분야

수학

조합론

계산과학

특수한 값

0! = 1

1! = 1

주요 용도

순열과 조합 계산

확률론

테일러 급수

수열과 급수

수학적 성질 및 확장

점화식

n! = n × (n-1)!

스털링 근사

큰 n에 대해 n! ≈ √(2πn) (n/e)^n

이중 계승

n!! = n × (n-2) × (n-4) × ... (2 또는 1까지)

감마 함수

팩토리얼을 실수 및 복소수 범위로 확장한 함수

1. 개요

팩토리얼은 수학에서 1부터 주어진 양의 정수 n까지의 모든 정수를 곱한 값을 의미하는 기본적인 연산이다. 이 개념은 조합론과 확률론을 비롯한 여러 수학 분야에서 핵심적인 역할을 한다.

팩토리얼은 n!이라는 기호로 표기하며, 예를 들어 5!은 1 × 2 × 3 × 4 × 5 = 120과 같이 계산된다. 특별히 0의 팩토리얼은 1로 정의된다(0! = 1). 이 정의는 조합론적 공식의 일관성을 유지하는 데 필수적이다.

팩토리얼의 주요 용도는 순열과 조합의 수를 계산하는 것이다. n개의 서로 다른 물건을 일렬로 배열하는 방법의 수는 n!이며, 이는 확률 계산의 기초가 된다. 또한 테일러 급수와 같은 수열 및 급수의 전개에서도 자주 등장한다.

팩토리얼 함수의 값은 n이 증가함에 따라 매우 빠르게 커지며, 이는 계산과학에서 알고리즘의 계산 복잡도를 분석할 때 중요한 요소가 된다. 큰 수에 대한 팩토리얼의 근사값은 스털링 근사 공식을 통해 효율적으로 구할 수 있다.

2. 정의

수학에서 팩토리얼은 1부터 주어진 양의 정수 n까지의 모든 정수를 곱한 값을 의미한다. 이는 조합론과 확률론에서 순열과 조합의 수를 계산하는 데 기본적으로 사용되는 연산이다. 팩토리얼의 표기법은 숫자 뒤에 느낌표를 붙여 n!으로 나타낸다.

팩토리얼의 정의에 따르면, 양의 정수 n에 대해 n! = n × (n-1) × (n-2) × ... × 3 × 2 × 1이 성립한다. 예를 들어, 5! = 5 × 4 × 3 × 2 × 1 = 120이다. 이 정의는 자연수에 대해서만 명확하지만, 감마 함수를 통해 실수 및 복소수 범위로 확장될 수 있다.

팩토리얼은 0에 대해서도 특별히 정의되는데, 0! = 1로 약속한다. 이 정의는 순열 공식 nPn = n!이 n=0일 때도 성립하도록 하기 위한 것이며, 빈 집합에서 원소를 선택하는 경우의 수가 1이라는 조합론적 직관과도 일치한다. 따라서 1! = 1과 함께 가장 기본적인 값으로 취급된다.

팩토리얼은 계산과학에서도 중요한 개념으로, 알고리즘의 계산 복잡도 분석이나 테일러 급수 전개, 수열과 급수의 연구 등 다양한 수학 및 응용 분야에서 핵심적인 역할을 한다.

3. 표기법

팩토리얼의 표기법은 주로 느낌표 기호 n!을 사용한다. 이는 양의 정수 n에 대해 1부터 n까지의 모든 정수를 곱한 값을 의미하는 표준적인 수학 기호이다. 예를 들어, 5!은 5 × 4 × 3 × 2 × 1 = 120을 나타낸다. 이 표기법은 조합론과 확률론을 비롯한 여러 수학 분야에서 널리 사용된다.

특수한 경우로, 0의 팩토리얼은 0! = 1로 정의된다. 이 정의는 순열과 조합의 공식을 일반화하고, 테일러 급수 등의 수학적 표현을 간결하게 만드는 데 필수적이다. 또한 1!의 값도 1이다.

팩토리얼의 개념은 정수 범위를 넘어 실수와 복소수로 확장될 수 있으며, 이때는 감마 함수를 이용해 정의된다. 감마 함수는 팩토리얼 함수를 실수 전체와 복소수 평면으로 해석적 연속시킨 것으로, Γ(n+1) = n!의 관계를 가진다. 큰 수 n에 대한 팩토리얼의 근사값을 구할 때는 스털링 근사 공식이 자주 활용된다.

4. 계산 방법

4.1. 반복적 계산

팩토리얼을 계산하는 가장 직관적인 방법은 반복적 계산이다. 이 방법은 팩토리얼의 정의, 즉 1부터 주어진 양의 정수 n까지의 모든 정수를 곱한다는 점을 그대로 코드나 계산 과정으로 옮긴다.

반복적 계산은 일반적으로 루프를 사용하여 구현된다. 초기값을 1로 설정한 후, 루프 변수를 1부터 n까지 증가시키면서 그 값을 계속 곱해 나간다. 이 과정은 n번의 곱셈 연산을 수행하게 되며, 알고리즘의 시간 복잡도는 O(n)에 해당한다. 이는 입력 크기 n에 비례하여 계산 시간이 선형적으로 증가함을 의미한다.

이 방법은 개념이 단순하고 구현이 쉽다는 장점이 있어, 팩토리얼을 처음 배우거나 간단한 프로그램을 작성할 때 널리 사용된다. 또한 재귀적 계산과 달리 함수 호출에 따른 오버헤드가 없어 대부분의 경우 더 효율적이다. 다만, n이 매우 클 경우 계산 결과가 빠르게 매우 큰 수가 되어 정수 오버플로 문제에 직면할 수 있으며, 이는 빅인티저와 같은 특수 자료형을 사용하여 해결할 수 있다.

4.2. 재귀적 계산

팩토리얼의 재귀적 계산은 함수가 자기 자신을 호출하는 방식으로 정의를 구현하는 방법이다. 팩토리얼 함수는 n! = n * (n-1)!이라는 관계를 만족하며, 이는 재귀 정의의 전형적인 예시이다. 여기서 (n-1)!은 원래 문제인 n!을 계산하기 위해 필요한 더 작은 하위 문제가 된다. 이 재귀 관계는 n이 1 또는 0이 될 때까지 계속해서 문제를 작게 만든다.

재귀적 계산을 구현할 때는 재귀 호출이 무한히 반복되지 않도록 종료 조건을 명시해야 한다. 팩토리얼의 경우, 0! = 1과 1! = 1이라는 정의가 종료 조건의 역할을 한다. 따라서 재귀 알고리즘은 n이 1 이하일 때는 1을 반환하고, 그보다 클 때는 n * factorial(n-1)을 계산하도록 설계된다. 이 방식은 문제를 자연스럽게 분해하여 해결한다는 점에서 직관적이다.

그러나 재귀적 방법은 스택 오버플로의 위험이 있다. 함수가 자기 자신을 호출할 때마다 호출 스택에 새로운 프레임이 쌓이게 되는데, n이 매우 크면 이 스택의 깊이가 과도하게 증가하여 메모리 부족 오류를 일으킬 수 있다. 또한, 동일한 계산을 반복적으로 수행할 가능성이 있어 반복문을 사용한 방법에 비해 실행 시간이 길어질 수 있다. 이러한 단점을 보완하기 위해 꼬리 재귀 최적화나 메모이제이션 같은 기법이 사용되기도 한다.

재귀적 팩토리얼 계산은 알고리즘 교육에서 재귀의 기본 개념을 설명하는 데 자주 활용된다. 또한, 계승을 계산하는 수학 함수를 프로그래밍 언어로 모델링할 때 재귀적 접근은 정의를 그대로 코드로 옮긴다는 점에서 우아한 해법으로 여겨진다.

5. 수학적 성질

5.1. 스털링 근사

팩토리얼의 값은 n이 커짐에 따라 매우 빠르게 증가한다. 예를 들어, 10!은 3백만이 넘고, 20!은 2.4×10^18에 달한다. 이렇게 큰 수를 정확히 계산하거나 다루는 것은 현실적으로 어려울 수 있다. 따라서 큰 n에 대한 팩토리얼의 근사값을 효율적으로 구하는 방법이 필요하며, 그 대표적인 것이 스털링 근사이다.

스털링 근사는 제임스 스털링의 이름을 딴 공식으로, 자연로그와 지수 함수를 사용하여 n!의 근사값을 제공한다. 가장 기본적인 형태는 n! ≈ √(2πn) (n/e)^n 이다. 여기서 π는 원주율, e는 자연로그의 밑이다. 이 공식은 n이 클수록 상대 오차가 매우 작아져 정확한 근사치를 준다.

보다 정확한 근사를 위해 고차 항을 포함하는 스털링 급수도 존재한다. 예를 들어, n! ≈ √(2πn) (n/e)^n (1 + 1/(12n) + ...) 와 같은 형태로, 추가 항을 포함할수록 근사의 정확도가 높아진다. 이 근사법은 통계역학, 확률론, 알고리즘 분석 등 다양한 분야에서 팩토리얼의 점근적 거동을 분석하는 데 널리 활용된다.

5.2. 감마 함수와의 관계

팩토리얼 함수는 음이 아닌 정수에 대해서만 정의되지만, 감마 함수는 이를 실수 및 복소수 영역으로 확장한 일반화된 개념이다. 감마 함수는 팩토리얼과 밀접한 관계를 가지며, 양의 정수 n에 대해 Γ(n) = (n-1)!이라는 항등식이 성립한다. 즉, 감마 함수의 입력값을 1만큼 이동시키면 팩토리얼 값을 얻을 수 있다. 이 관계는 팩토리얼의 정의를 자연수 영역을 넘어서 복소수 평면의 대부분의 점으로 확장하는 데 핵심적인 역할을 한다.

감마 함수는 팩토리얼이 정의되지 않는 반정수나 분수와 같은 비정수 값에 대해서도 의미 있는 결과를 제공한다. 예를 들어, Γ(1/2)의 값은 √π로, 이는 (-1/2)!에 해당하는 값으로 해석될 수 있다. 이러한 확장은 해석적 연속의 대표적인 사례로, 실해석학과 복소해석학에서 중요한 주제가 된다. 감마 함수 자체는 적분 표현을 통해 정의되며, 이는 팩토리얼의 이산적인 곱셈 정의를 연속적인 영역으로 자연스럽게 연결한다.

팩토리얼을 감마 함수로 일반화함으로써 미적분학의 풍부한 도구들을 적용할 수 있게 되었다. 감마 함수의 로그 미분으로 정의되는 디감마 함수는 팩토리얼의 성장률을 연구하는 데 유용하게 쓰인다. 또한, 통계학의 감마 분포나 수리물리학의 여러 계산에서 감마 함수는 필수적으로 등장하며, 이는 모두 팩토리얼 개념의 연속적 확장에 기반을 둔다. 따라서 감마 함수는 팩토리얼이 단순한 정수의 곱셈을 넘어 수학의 다양한 분야에서 깊이 통합될 수 있는 기반을 제공한다.

6. 응용 분야

6.1. 조합론

팩토리얼은 조합론의 기본적인 도구로서, 특히 순열과 조합의 수를 계산하는 데 핵심적인 역할을 한다. n개의 서로 다른 물체를 일렬로 배열하는 방법의 수, 즉 순열의 수는 정확히 n!이다. 예를 들어, 세 개의 다른 물체 A, B, C를 나열하는 방법은 ABC, ACB, BAC, BCA, CAB, CBA로 총 3! = 6가지가 된다.

또한, 팩토리얼은 조합의 수를 나타내는 이항 계수를 정의하는 데 사용된다. n개의 서로 다른 물체에서 k개를 선택하는 조합의 수는 n! / (k! * (n-k)!) 공식으로 계산된다. 이 공식에서 분모에 k!과 (n-k)!이 사용되는 이유는 선택된 k개의 순서를 무시하고, 선택되지 않은 (n-k)개의 순서도 무시하기 위해서이다.

팩토리얼의 이러한 성질은 단순한 개수 세기 문제를 넘어, 확률 분포 계산이나 생성 함수 등 조합론의 더 넓은 영역에서도 광범위하게 응용된다. 예를 들어, 카탈랑 수나 스털링 수와 같은 중요한 조합론적 수열을 표현할 때도 팩토리얼이 등장한다.

6.2. 확률론

팩토리얼은 확률론에서 사건의 경우의 수를 계산하는 데 핵심적인 역할을 한다. 특히, 순열과 조합의 계산은 팩토리얼을 바탕으로 이루어진다. 예를 들어, 서로 다른 n개의 물체를 일렬로 배열하는 방법의 수, 즉 순열의 수는 n!로 직접 표현된다. 또한, n개의 서로 다른 물체 중에서 r개를 선택하는 조합의 수는 n! / (r! * (n-r)!) 공식으로 계산되며, 이는 이항 계수와 동일하다. 이러한 기본적인 계산은 확률을 구할 때 특정 사건이 일어날 가능성을 정량화하는 데 필수적이다.

팩토리얼은 다양한 확률 분포의 정의와 계산에도 등장한다. 대표적인 예로 이항 분포가 있다. n번의 독립적인 시행에서 성공 확률이 p인 사건이 정확히 k번 일어날 확률을 계산하는 공식에는 이항 계수가 포함되어 있어 팩토리얼 연산이 필요하다. 또한, 초기하 분포나 포아송 분포와 같은 다른 이산형 확률 분포에서도 팩토리얼이 공식에 나타난다. 이는 팩토리얼이 사건의 발생 가능한 순서나 배열의 수를 세는 본질적 특성과 밀접하게 연결되어 있기 때문이다.

더 나아가, 확률론의 통계적 응용 분야인 가설 검정이나 회귀 분석에서도 팩토리얼이 간접적으로 활용된다. 예를 들어, 카이제곱 검정과 같은 비모수 검정을 수행할 때 관측된 빈도와 기대 빈도를 비교하는 과정에서 조합론적 계산이 필요할 수 있다. 또한, 다항식 계수를 포함하는 다항 분포는 이항 분포를 일반화한 것으로, 여기서도 팩토리얼이 사용된다. 따라서 팩토리얼은 확률 모델을 구축하고 데이터를 분석하는 데 있어 기초적인 수학적 도구로 자리 잡고 있다.

6.3. 계산 복잡도

팩토리얼의 계산 복잡도는 주로 팩토리얼 값을 직접 계산하는 데 필요한 연산의 효율성을 다룬다. 팩토리얼 함수는 입력 크기 n에 대해 출력 값의 크기가 매우 빠르게 증가하는 초기하 함수이기 때문에, 계산 자체의 시간 복잡도보다는 결과값의 크기 증가에 따른 비용이 주요 관심사가 된다.

팩토리얼 n!을 계산하는 가장 간단한 방법은 1부터 n까지의 정수를 차례로 곱하는 반복적 계산이다. 이 방법의 시간 복잡도는 곱셈 횟수에 비례하므로 O(n)이다. 그러나 여기서 중요한 점은 각 곱셈 연산의 비용이 상수가 아니라는 것이다. n이 커짐에 따라 중간 결과값의 자릿수(비트 수)가 선형이 아닌 Θ(n log n)에 비례하여 증가한다. 따라서 큰 정수의 곱셈 비용을 고려할 때, 실제 실행 시간은 O(n)보다 훨씬 크게 증가한다. 큰 수 연산을 위한 알고리즘 (예: 카라추바 알고리즘 또는 FFT 기반 곱셈)을 사용하면 이론적으로 더 나은 점근적 시간 복잡도를 얻을 수 있으나, 실용적인 수준에서는 여전히 큰 n에 대한 계산은 매우 부담스럽다.

이러한 계산적 난이도 때문에, 실제 많은 응용 분야에서는 팩토리얼의 정확한 값을 계산하기보다는 스털링 근사와 같은 근사 공식을 사용하거나, 로그 값을 활용한다. 특히 확률론과 통계학에서 조합의 수를 계산하거나 큰 수를 다룰 때는 로그 팩토리얼(ln(n!)) 값을 계산하는 것이 일반적이다. 또한 알고리즘 분석과 계산 복잡도 이론에서 팩토리얼 시간 복잡도(O(n!))는 NP-난해 문제나 외판원 문제와 같은 전수 조사 알고리즘의 비효율성을 설명하는 지표로 자주 언급된다.

7. 프로그래밍 구현

팩토리얼은 조합론과 확률론 등에서 빈번히 사용되므로, 컴퓨터 과학과 프로그래밍에서 이를 효율적으로 계산하는 방법이 중요하게 다뤄진다. 기본적인 구현 방식은 문제의 정의를 그대로 코드로 옮기는 것으로, 반복문을 사용한 방법과 재귀 함수를 사용한 방법이 가장 일반적이다. 반복문을 이용하면 변수에 누적 곱을 저장하며 1부터 n까지 순회하는 방식으로, 직관적이고 스택 오버플로의 위험이 없다는 장점이 있다. 반면 재귀 함수는 팩토리얼의 수학적 정의인 n! = n × (n-1)!를 그대로 코드로 표현하여 가독성이 높지만, 깊은 재귀 호출 시 메모리를 많이 사용할 수 있다.

큰 수의 팩토리얼을 계산할 때는 결과값이 매우 빠르게 커지는 특성상 정수 오버플로가 주요 문제가 된다. 일반적인 정수 자료형으로는 20! 정도만 안전하게 표현할 수 있다. 이를 해결하기 위해 임의 정밀도 산술을 지원하는 파이썬의 int 타입이나 자바의 BigInteger 클래스와 같은 특수한 자료형을 사용해야 한다. 또한 성능을 위해 미리 계산된 값을 캐시에 저장하는 메모이제이션 기법이나, 매우 큰 n에 대해서는 스털링 근사 공식을 활용하는 방법도 고려된다.

팩토리얼 계산은 알고리즘의 시간 복잡도 분석에서 기초 예시로 자주 등장하며, 계승의 빠른 증가 속도는 조합 가능성의 폭발적 증가를 설명하는 데 활용된다. 다양한 프로그래밍 언어의 표준 수학 라이브러리에는 팩토리얼 함수가 포함되어 있는 경우가 많아, 실제 개발 시에는 이러한 내장 함수를 사용하는 것이 효율적이다.

8. 관련 문서

  • 위키백과 - 계승

  • 위키백과 - 감마 함수

  • 위키백과 - 스털링 근사

  • 위키백과 - 이항 계수

  • 위키백과 - 순열

  • 위키백과 - 조합

  • Wolfram MathWorld - Factorial

  • NIST Digital Library of Mathematical Functions - Gamma Function

리비전 정보

버전r1
수정일2026.02.26 22:55
편집자unisquads
편집 요약AI 자동 생성