首页 > 后端开发 > C++ > 我们如何有效地从 T1 = T2 * N 中提取 T2 项!使用素指数分析?

我们如何有效地从 T1 = T2 * N 中提取 T2 项!使用素指数分析?

Barbara Streisand
发布: 2024-12-05 16:57:10
原创
599 人浏览过

How Can We Efficiently Extract the T2 Term from T1 = T2 * N! Using Prime Exponent Analysis?

在本文中,作者讨论了一种使用定点大数库快速准确地计算大数阶乘的方法。关于实现的一个反复出现的问题是从乘积 T1 = T2 * N! 中提取 T2 项,其中 T1 和 N!是已知的。为了找到 T2 项,作者对素数指数进行了分析,并提出了一个计算公式:

T2(4N) = multiplication(i=all primes<=4N) of [i^sum(j=1,2,3,4,5,...4N/(i^j)) of [(4N/(i^j))%2]]
登录后复制

T2 的子项在 T2(N) 项中对于素数 i 具有指数 e,可表示为计算如下:

for (e=0,j=N4;j;e+=j&1,j/=p);
登录后复制

其中 e 是指数,p 是质数,N4 是4*N

计算出的 T2 项随后用于优化阶乘的计算,所得算法的计算复杂度接近 O(log(n))。

为前 128 个阶乘提供了粗略时间测量。作者承认此实现无法进一步简化,并且已经高度优化。

以上是我们如何有效地从 T1 = T2 * N 中提取 T2 项!使用素指数分析?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板