팩토리얼 계산기

범위: 0 ~ 170 (JavaScript 제한)

📊 결과

5!
=
120
📏 자릿수
3
🔟 끝자리 0의 개수
1
🔢 지수 표기
1.2e+2

📝 단계별 계산:

🎨 시각적 곱셈 트리

🎯 순열 & 조합

🔄 순열 P(n,r)

공식: P(n,r) = n!/(n-r)!
60
5!/(5-3)! = 60

💡 순서가 중요함: ABC ≠ BAC

🎲 조합 C(n,r)

공식: C(n,r) = n!/(r!(n-r)!)
10
5!/(3!×2!) = 10

💡 순서가 중요하지 않음: ABC = BAC

📋 팩토리얼 참고 표

n n! 자릿수 실생활 예시

💡 흥미로운 사실

🃏 카드 섞기

52! ≈ 8.07 × 10⁶⁷ 가지의 가능한 배열이 있습니다. 지구의 모든 사람이 빅뱅 이후 초당 한 번씩 한 덱을 섞었다고 해도, 가능성의 일부만 겨우 확인하는 수준입니다!

🎭 극장 좌석 배치

10명은 10! = 3,628,800 가지 방식으로 앉을 수 있습니다. 운영/배치는 기하급수적으로 복잡해집니다!

📊 0! = 1

정의에 따라 0! = 1 입니다. 0개를 배열하는 방법은 “아무것도 하지 않기” 단 1가지뿐입니다. 덕분에 수식이 일관되게 성립합니다.

🚀 증가 속도

팩토리얼은 지수 함수보다도 더 빠르게 증가합니다! 2ⁿ은 두 배씩 늘지만, n!은 점점 커지는 수로 계속 곱해집니다. 100!은 158자리입니다!

팩토리얼 계산기 - 단계별로 n! 계산

🔢 0부터 170까지 어떤 숫자든 팩토리얼(n!)을 계산하세요. 단계별 풀이, 순열·조합, 그리고 실생활 응용까지 확인할 수 있습니다.

팩토리얼(계승)이란?

음이 아닌 정수 n의 팩토리얼(표기: n!)은 n 이하의 모든 양의 정수를 곱한 값입니다. 이는 서로 다른 n개의 물체를 배열하는 방법의 수를 나타냅니다.

팩토리얼 공식

n! = n × (n-1) × (n-2) × ... × 3 × 2 × 1

  • 0! = 1 (정의)
  • 1! = 1
  • n! = n × (n-1)! (재귀 정의)

팩토리얼 예시

  • 5! = 5 × 4 × 3 × 2 × 1 = 120
  • 10! = 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1 = 3,628,800
  • 0! = 1 (특수한 경우)
  • 20! = 2,432,902,008,176,640,000

왜 0! = 1 인가요?

0개의 물체를 배열하는 방법은 “빈 배열(아무것도 하지 않기)” 단 1가지뿐입니다. 이 정의는 (특히 조합론에서) 수식이 올바르게 동작하도록 보장합니다. 또한 재귀식 n! = n × (n-1)! 에서 1! = 1 × 0! 이므로 0!은 1이어야 합니다.

순열

P(n,r) = n!/(n-r)!

서로 다른 n개 중 r개를 뽑아 배열하는 방법의 수(순서가 중요).

  • 예: P(5,3) = 5!/(5-3)! = 120/2 = 60
  • 활용: 경기 시상대 순위(1등, 2등, 3등)

조합

C(n,r) = n!/(r!(n-r)!)

서로 다른 n개 중 r개를 선택하는 방법의 수(순서가 중요하지 않음).

  • 예: C(5,3) = 5!/(3!×2!) = 120/(6×2) = 10
  • 활용: 로또 번호, 위원회 선출

n!의 끝자리 0 개수

끝자리 0은 10 = 2 × 5의 인수에서 생깁니다. 2는 항상 5보다 많으므로, 5의 개수만 세면 됩니다:

0의 개수 = ⌊n/5⌋ + ⌊n/25⌋ + ⌊n/125⌋ + ...

  • 10!은 끝자리 0이 2개
  • 25!는 끝자리 0이 6개
  • 100!은 끝자리 0이 24개

실생활 응용

  • 암호학: 가능한 암호 키 개수
  • 스케줄링: 일정/작업/이벤트 배열
  • 유전학: 가능한 DNA/단백질 서열
  • 확률: 게임/복권의 확률 계산
  • 컴퓨터 과학: 알고리즘 복잡도 분석
  • 제조: 생산 라인 배치
  • 물류: 경로 최적화 문제

유명한 팩토리얼 값

  • 52! ≈ 8.07 × 10⁶⁷ (카드 섞기)
  • 70! ≈ 1.2 × 10¹⁰⁰ (우주 원자 수 ≈ 10⁸⁰ 초과)
  • 100! ≈ 9.3 × 10¹⁵⁷ (158자리!)
  • 170! ≈ 7.3 × 10³⁰⁶ (JavaScript 최대)

스털링 근사(Stirling's Approximation)

큰 n에서는 정확한 팩토리얼 계산이 비실용적입니다. 스털링 근사는 다음과 같습니다:

n! ≈ √(2πn) × (n/e)ⁿ

n이 커질수록 근사 정확도가 좋아집니다. n = 10에서 오차는 1% 미만입니다.

팩토리얼 증가 속도 비교

팩토리얼은 지수/다항 함수보다 훨씬 빠르게 증가합니다:

  • 다항: n² = 100 (n=10)
  • 지수: 2ⁿ = 1,024 (n=10)
  • 팩토리얼: n! = 3,628,800 (n=10)

이중 팩토리얼

이중 팩토리얼(n!!)은 한 칸씩 건너뛰며 곱합니다:

  • n!! = n × (n-2) × (n-4) × ... × 2 또는 1
  • 7!! = 7 × 5 × 3 × 1 = 105
  • 8!! = 8 × 6 × 4 × 2 = 384

부분 팩토리얼(완전 순열 / Derangements)

부분 팩토리얼 !n은 어떤 원소도 원래 위치에 오지 않는 순열의 개수입니다:

!n = n! × (1/0! - 1/1! + 1/2! - 1/3! + ... + (-1)ⁿ/n!)

예: !3 = 2 (ABC에서 어떤 글자도 제자리 아닌 배열: BCA, CAB)

프로그래밍 구현

반복(Iterative) 방식:

function factorial(n) {
    let result = 1;
    for (let i = 2; i <= n; i++) {
        result *= i;
    }
    return result;
}
            

재귀(Recursive) 방식:

function factorial(n) {
    if (n === 0 || n === 1) return 1;
    return n * factorial(n - 1);
}
            

💡 팁: 순열/조합을 계산할 때는 오버플로를 피하기 위해 큰 팩토리얼을 직접 계산하기 전에 공통 인수를 약분하세요. 예를 들어 C(100,2) = 100!/(2!×98!)는 (100×99)/2 = 4,950로 계산할 수 있습니다!

댓글 (0)

의견을 남겨 주세요. 예의를 지키고 주제에서 벗어나지 말아 주세요.

아직 댓글이 없습니다. 댓글을 남기고 의견을 공유해 주세요!

댓글을 남기려면 로그인해 주세요.

댓글을 남기려면 로그인