方法(一):
关于大数乘法,可以使用数组来模拟小学三年级的乘法竖式计算过程,代码如下:
方法(二):关于大数乘法,可以使用大整数乘法的分治方法:
设X和Y都是n位的整数,现在要计算它们的乘积XY。如果
**利用小学所学的方法,将每两个一位数都进行相乘,最后
**再相加,效率比较低下,乘法需要n^2次。分治的方法可以
**减少乘法的次数,设X被分成2部分A和B,即X=A*10^(n/2)+B
**Y也同样处理,即Y=C*10^(n/2)+D.
**那么,XY=(A*10^(n/2)+B)*(C*10^(n/2)+D)
=AC*10^n+(AD+BC)*10^(n/2)+BD ------>(1)
**AD和BC可以利用AC和BD来表示,AD+BC=(A-B)*(D-C)+AC+BD --->(2)
**这样(1)的乘法次数由4次减少到3次。
**最后的运算效率会有所提高。
***以上出自 计算机算法设计与分析(王晓东) *******/
代码如下: