擂台:计算阶乘的 18 位非零尾数
阶乘不用解释,阶乘的 18 位非零尾数需要简单解释一下。阶乘的十进制结果中末尾都会有很多个数字 0 (5以下的除外),去掉这些连续的 0 之后最后 18 位数字即是这里所说的 18 位非零尾数。之所以称这为“非零”,是因为最后一个数字肯定不是 0。举两个例子,10! = 3,628,800,其 18 位非零尾数为 36,288;24! = 620,448,401,733,239,439,360,000,其 18 位非零尾数为 044,840,173,323,943,936
目前我写的最新版本,对于 10,000 位的整数,在我的机器上(P4 1.8A + 256M, 超频到 2.4)可以在 1 秒内计算其阶乘的 18 位非零尾数。现在对于我使用的算法来讲,速度已经算是达到极至了。故来此设立擂台。
程序中虽然还有可以再进行优化的地方,但都不值得去做了,因为对速度的提高根本起不了多大的作用。
相关程序和更多的介绍可以访问 http://www.ysiw.info/T18/T18.html
欢迎高手打擂,欢迎有兴趣的人参与讨论。
能给出更好的算法者,我可以再送 2000 分。