小编典典

计算阶乘的快速算法

algorithm

我发现此页面描述了许多用于计算阶乘的算法。不幸的是,解释很简洁,我不想逐行浏览源代码以了解算法背后的基本原理。

谁能指出我对这些(或其他快速的)用于计算阶乘的算法的更详细描述吗?

编辑:
此页面描述了质数分解的方法,这是所有性能最佳的因数算法所共有的技术。它还包含Python中一些不错的示例代码。作者链接到二进制拆分的描述,并引用了《
算法杂志 》上的一篇文章(“关于计算阶乘的复杂性”),如果我只能亲身体验的话,该文章看起来很有希望。


阅读 1327

收藏
2020-07-28

共1个答案

小编典典

请查看Richard
Fateman撰写的本文(PDF链接)。这些代码示例位于Lisp中,但是无论如何,大多数秘密归结为使您必须执行的bignum(任意精度整数)计算次数最少。

自然地,如果您不需要/有大数目,这是微不足道的。查找表或简单循环都可以。

编辑: 如果你可以使用一个大概的答案,您可以直接通过累加计算阶乘的对数log(k)k = 2 ... n,或使用古老的斯特林近似。您想尽可能使用对数以避免溢出;尤其是,斯特林近似法的幼稚应用会在很多不必要的地方溢出。

2020-07-28