概述
都知道, 计算机中存储整数是存在着位数限制的, 所以如果需要计算100位的数字相乘, 因为编程本身是不支持存储这么大数字的, 所以就需要自己实现, 当然了, 各个编程语言都有大数的工具包, 何必重复造轮子...长乘运算
当然, 如果自己实现这样一个大数, 用数组来存储每一位是我当前想到的方法. 那如何进行乘法运算呢?...共: 次运算
三位数相乘: 3次短乘, 6位数加法(最差情况), 共: 次运算.
通过上面, 总结规律, n位数相乘(长乘)的运算次数是: 次运算....算一下:
计算 u: 两位数乘法, 10次运算
计算w: 10次运算
计算s: 两位数减法两次, 一次乘法, 14次运算
计算整体: 8位数相加(), 8次运算
整体: 次运算.
32次运算, 之前长乘的方式需要几次呢...算法比较
为了比较两个算法的运算次数, 让我们忽略运算的低次幂以及常数项, 则(以下 n 为2的幂):
「长乘」
「Karatsuba」:
分别进行计算:
2的幂 长乘 Karatsuba
0 1 1