我有一个任务来实现Toom-Cook 3路乘法算法。我正在关注维基百科http://en.wikipedia.org/wiki/Toom%E2%80%93Cook_multiplication上的描述,并设法将两个大数字存储到字符串中,并根据维基百科页面上的“拆分”步骤将字符串拆分为较小的字符串。下一步是“评估”,我必须计算一个新的数字p0 = m0 + m2(Bordrato的“更快的评估” - 在同一页面上找到),其中m0和m2是我通过分割大数字创建的数字(在上一步中)。问题是我不能简单地加上m0和m2,因为这两个数字仍然很大,不可能以标准方式加在一起。这是否意味着我必须实现我自己的算法来添加大数(以及减少和分割,因为它们也是需要的),或者我错过了什么?如果有人可以链接我一个可能的实现甚至伪代码,我们将不胜感激。
答案 0 :(得分:1)
你必须实现自己的加法,减法,模数等方法。前段时间我试图实现一个BigInteger库,我找到了一些可能对你有用的资源。
顺便提一下,我建议您使用基数2作为数字(see here.),因为您可以利用计算机的特性使您的操作更加轻松快捷。
答案 1 :(得分:0)
LibTomMath是开源的,包括Toom-Cook乘法;看看。