分治-大整数乘法

请设计一个有效的算法,可以进行两个n位大整数的乘法运算

小学的方法:O(n2)           
效率太低 X=
《分治-大整数乘法》

Y=《分治-大整数乘法》

X = a 2n/2+ b     Y = c 2n/2+ d

XY = ac 2n+ (ad+bc)2n/2 + bd

为了降低时间复杂度,必须减少乘法的次数。

1.XY=
ac 2n + ((
a
c)(
b
d)+
ac+
bd) 2n/2 +
bd 2.XY=
ac 2n + ((
a+
c)(
b+
d)-
ac
bd) 2n/2 +
bd

《分治-大整数乘法》

如果将大整数分成更多段,用更复杂的方式把它们组合起来,将有可能得到更优的算法。

最终的,这个思想导致了快速傅利叶变换(Fast Fourier Transform)的产生。该方法也可以看作是一个复杂的分治算法。



    原文作者:大整数乘法问题
    原文地址: https://blog.csdn.net/qq_32146369/article/details/52828191
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞