Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 큰 수의 계승(Factorial) 구하는 프로그램

개요

아주 큰 수 n이 주어졌을 때 그 계승(factorial)을 구해야 하는 상황을 가정해 보겠습니다. C나 Java 같은 다른 프로그래밍 언어에서는 계승 결과가 정수 자료형의 표현 범위를 순식간에 초과해 버리기 때문에 큰 수의 계승을 구하는 것이 매우 까다롭습니다.

하지만 파이썬은 숫자의 크기를 자동으로 감지하고, 필요할 때 기본적으로 더 큰 정수 형식(임의 정밀도 정수, Arbitrary Precision Integer)으로 확장해 주기 때문에 별도의 특수 처리 없이도 큰 수의 계승을 손쉽게 계산할 수 있습니다.

예를 들어 입력값이 n = 50이라면 출력 결과는 다음과 같습니다.

30414093201713378043612608166064768844377641568960512000000000000

문제 해결 접근 방법

이 문제는 다음 단계를 따라 해결할 수 있습니다.

  • math 라이브러리에서 factorial 함수를 임포트합니다.
  • n이 아무리 큰 값이더라도 단순히 factorial(n)을 호출하여 계산합니다.

참고로 math.factorial 함수는 음수나 정수가 아닌 값이 입력되면 ValueError를 발생시키므로, 입력값이 0 이상의 정수인지 확인하는 것이 좋습니다.

예제 코드

아래 구현 예제를 통해 더 잘 이해해 보겠습니다.

from math import factorial

def solve(n):
   return factorial(n)

n = 50
print(solve(n))

입력

50

출력

30414093201713378043612608166064768844377641568960512000000000000

마무리

이처럼 파이썬은 내장 math 모듈의 factorial 함수와 임의 정밀도 정수 지원 덕분에, 다른 언어에서는 오버플로우 문제로 어려운 매우 큰 수의 계승 계산도 코드 한 줄로 간단하게 처리할 수 있습니다.