【发布时间】:2013-05-12 00:23:54
【问题描述】:
实现Karatsuba 大数乘法的最有效方法是什么?输入操作数大小不相等且大小不是 2 的幂,甚至可能不是偶数?填充操作数意味着额外的内存,我想尝试使其内存-高效。
我在非偶数大小的 Karatsuba 中注意到的一件事是,如果我们尝试将数字分成尽可能接近偶数的“两半”,那么一半将有 m+1 个元素,而另一半将有 m 个元素,其中 m = floor(n/2),n 是拆分数中的元素数。如果两个数的奇数大小相同,那么我们需要计算大小为 m+1 的两个数的乘积,需要 n+1 存储,而不是 n 为偶数时的 n。所以我猜测奇数尺寸的 Karatsuba 可能比偶数尺寸需要更多的内存吗?
【问题讨论】:
-
This prior SO question 提供了一些可能有帮助的实现细节
标签: algorithm multiplication largenumber