R 에서 170!팩토리얼(factorial), 170계승 이상을 계산하는 법

R에서는 170!까지만 계산할 수 있습니다(아래 코드 참조). 171!부터는 다음과 같이 일반적인 방법으로 계산할 수 없습니다.

> factorial(170)
[1] 7.257416e+306
> factorial(171)
[1] Inf
경고메시지(들): 
In factorial(171) : value out of range in 'gammafn'

그러면 어떻게 계산할 수 있을까요? factorialZ 을 쓰시면 됩니다. 우선 다음과 같이 gmp를 설치합니다.

> install.packages("gmp")

그런 다음 아래와 같이 하면 됩니다. 참고로 조금 표현 방식이 다르게 나옵니다. 그리고 171!이상도 계산해서 결과를 보여주니, 너무 높은 값을 넣으면, 엄청난 숫자를 보게 되니 주의하세요!


> factorial(170)
[1] 7.257416e+306
> factorialZ(170)
Big Integer ('bigz') :
[1] 7257415615307998967396728211129263114716991681296451376543577798900561843401706157852350749242617459511490991237838520776666022565442753025328900773207510902400430280058295603966612599658257104398558294257568966313439612262571094946806711205568880457193340212661452800000000000000000000000000000000000000000
> factorialZ(171)
Big Integer ('bigz') :
[1] 1241018070217667823424840524103103992616605577501693185388951803611996075221691752992751978120487585576464959501670387052809889858690710767331242032218484364310473577889968548278290754541561964852153468318044293239598173696899657235903947616152278558180061176365108428800000000000000000000000000000000000000000