我正在使用 GMP 来计算非常大的阶乘(例如 234234!)。有没有办法在计算之前知道结果将(或可能)是多少位数字?
最佳答案
您可以转换 Stirling's approximation使用简单的对数数学公式计算数字位数:
n! ~ sqr(2*pi*n) * (n/e)^n
log10(n!) ~ log10(2*pi*n)/2 + n*log10(n/e)
硬件浮点数学足以实现这一点,这使得它快如闪电。
关于language-agnostic - 可以在计算之前知道阶乘有多大吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1113167/