怎么用手指算数 大数相乘,快速算法?
浏览量:2173
时间:2021-03-15 07:40:37
作者:admin
大数相乘,快速算法?
有一个快速算法来计算功率,它不是用暴力一个接一个地乘以。例如,如果你想计算2^10000,计算机将首先计算2^5000,然后计算平方,即两个数的乘法。为了计算2^5000,计算机将首先计算2^2500,然后将其平方。这种算法称为快速幂算法。对于2^n的计算,如果每次乘法的时间复杂度为O(1),则总体时间复杂度仅为O(logn)级。R一般来说,为了实现快速幂算法,我们首先对指数进行二进制表示。例如,如果要计算a的23次方,可以将23分解为16421。然后计算B=a^2,C=B^2=a^4,d=(C^2)^2=a^16。最后的结果是ABCD的乘法。但这里乘法的复杂度不是o(1),因为它是无限精度的,称为大数乘法。大数乘法也有许多算法。最简单的方法类似于手工计算。复杂度为O(n^2)。其它方法有分治法、复杂度O(n^1.58)、FFT法、复杂度O(n logn logn)等,在快幂大数乘法的O(logn)次中,最复杂的是最后一次,即2^5000次。前一个几何级数的复杂度会衰减,因此总体复杂度就是最后一次计算的复杂度。如果使用FFT方法,复杂度比线性的要高一些。一般来说,它可以在计算机上随意计算。R CPU不能全速运行,因为这个程序只使用一个内核进行计算,而您显示的是总利用率,所以它将保持在大约四分之一的水平。R是否使用shift操作涉及Python大数操作的具体设计,我不太了解。但原则上,这也是很有可能的。如果位串用于存储大量数字,则2^n的计算只需在数组的第n位设置1,其余可以设置为0。然后转换成十进制是这段代码中计算成本最高的部分。右
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。
下一篇
关键句有哪些 关键词指什么