R中大数阶乘的计算
Calculation of the factorial of a large number in R
任务:计算一个大数的阶乘。
在P中,阶乘最多只能计算到170。
> factorial(170)
[1] 7.257416e+306
对于大数,发生溢出:
> factorial(171)
[1] Inf
Warning message:
In factorial(171) : value out of range in 'gammafn'
使用它并尝试!您可以使用 lfactorial 来使用 lgamma 而不是 gamma 并获得自然对数。
lfactorial(1536)
使用 gmp
包中的 factorialZ
:
> gmp::factorialZ(171)
Big Integer ('bigz') :
[1] 1241018070217667823424840524103103992616605577501693185388951803611996075221691752992751978120487585576464959501670387052809889858690710767331242032218484364310473577889968548278290754541561964852153468318044293239598173696899657235903947616152278558180061176365108428800000000000000000000000000000000000000000
任务:计算一个大数的阶乘。 在P中,阶乘最多只能计算到170。
> factorial(170)
[1] 7.257416e+306
对于大数,发生溢出:
> factorial(171)
[1] Inf
Warning message:
In factorial(171) : value out of range in 'gammafn'
使用它并尝试!您可以使用 lfactorial 来使用 lgamma 而不是 gamma 并获得自然对数。
lfactorial(1536)
使用 gmp
包中的 factorialZ
:
> gmp::factorialZ(171)
Big Integer ('bigz') :
[1] 1241018070217667823424840524103103992616605577501693185388951803611996075221691752992751978120487585576464959501670387052809889858690710767331242032218484364310473577889968548278290754541561964852153468318044293239598173696899657235903947616152278558180061176365108428800000000000000000000000000000000000000000