概述
都知道, 计算机中存储整数是存在着位数限制的, 所以如果需要计算100位的数字相乘, 因为编程本身是不支持存储这么大数字的, 所以就需要自己实现, 当然了, 各个编程语言都有大数的工具包, 何必重复造轮子...长乘运算
当然, 如果自己实现这样一个大数, 用数组来存储每一位是我当前想到的方法. 那如何进行乘法运算呢?...通过上面, 总结规律, n位数相乘(长乘)的运算次数是: 次运算. 当然, 这就是我们从小接受的进行乘法运算的方法, 所以写成这样还好, 比较合乎常理....原来的长乘需要几次呢? 次.
是不是有一种动态规划, 分而治之的感觉? 可以利用函数递归来实现....算法比较
为了比较两个算法的运算次数, 让我们忽略运算的低次幂以及常数项, 则(以下 n 为2的幂):
「长乘」
「Karatsuba」:
分别进行计算:
2的幂 长乘 Karatsuba
0 1 1