我们平时接触的长乘法,按位相乘,是一种时间复杂度为 O(n ^ 2) 的算法。今天,我们来介绍一种时间复杂度为 O (n ^ log 3) 的大整数乘法(log 表示以 2 为底的对数)。
介绍原理
karatsuba 算法要求乘数与被乘数要满足以下几个条件,第一,乘数与被乘数的位数相同;第二,乘数与被乘数的位数应为 2 次幂,即为 2 ^ 2, 2 ^ 3, 2 ^ 4, 2 ^ n 等数值。
下面我们先来看几个简单的例子,并以此来了解 karatsuba 算法的使用方法。
两位数相乘
我们设被乘数 A = 85,乘数 B = 41。下面来看我们的操作步骤:
将 A, B 一分为二,
- 1
- 2
前往页