长乘运算
当然, 如果自己实现这样一个大数, 用数组来存储每一位是我当前想到的方法. 那如何进行乘法运算呢?...Karatsuba方法
由简入难, 先看一下两位数的乘法:
12*34, 为了方便初中方程未知数的思维, 我们将这两个数字拆解一下:
则,
当化简到这里, 2位数相乘需要几次运算?...不过下面才是重头戏, 数字多了之后, 此算法就明显比传统的快的多了.
4位数乘法
计算:
设:
套用上面的公式:
令:
则结果为:
此次进行了几次运算呢?...原来的长乘需要几次呢? 次.
是不是有一种动态规划, 分而治之的感觉? 可以利用函数递归来实现....算法比较
为了比较两个算法的运算次数, 让我们忽略运算的低次幂以及常数项, 则(以下 n 为2的幂):
「长乘」
「Karatsuba」:
分别进行计算:
2的幂 长乘 Karatsuba
0 1 1