我有一个任务来实现Toom-Cook 3-way乘法算法。我正在关注维基百科http://en.wikipedia.org/wiki/Toom%E2%80%93Cook_multiplication的描述,并且我设法将两个大数字存储到字符串中,并根据维基百科页面上的“拆分”步骤将字符串拆分为较小的数字。下一步是“评估”,我必须计算一个新的数字p0 = m0 + m2(Bordrato的“快速评估” - 可在同一页上找到),其中m0和m2是我通过分割大数字创建的数字(在前面的步骤中)。问题是我不能简单地加上m0和m2,因为这两个数字仍然很大,不可能以标准方式加在一起。这是否意味着我必须实现我自己的算法来添加大量数据(以及减少和分割,因为它们也是需要的),还是我错过了一些东西?如果任何人都可以链接我一个可能的实现,甚至一个伪代码,这将不胜感激。Toom-Cook乘法算法实现
0
A
回答
0
1
你必须实现你自己的方法,用于加,减,模等等。前一段时间我试图实现一个BigInteger库,我发现了一些可能对你有用的资源。
- BIGNUM数学书(如指出由以前的答案)
- 的Java OpenJDK的 BigInteger implementation,与文档
- 算法和数据结构的基本工具箱,(我认识到这本书的Karatsube)。
顺便说一下,我建议您使用base 2作为您的号码(see here.),因为您可以利用计算机的性质使您的操作更加轻松快捷。
相关问题
- 1. 实现LRU算法
- 2. 实现LayoutAlgorithm.SINGLE_COLUMN算法?
- 3. 实现Strassen算法
- 4. CRC算法实现
- 5. 实数乘法
- 6. 更快的矩阵向量乘法实现[并行计算]
- 7. 乘用算法Bitshifts
- 8. 在HugeInteger类中实现乘法功能
- 9. 在JavaScript中实现Karatsuba乘法?
- 10. 二进制乘法器的C++实现
- 11. 实现卷积作为矩阵乘法
- 12. 算法矩阵加法和乘法
- 13. 实现Fisher Yates算法
- 14. Knuth Morris Pratt算法实现
- 15. Java实现算法调度
- 16. AdaBoost ML算法python实现
- 17. 调度算法实现C++
- 18. RandomizedQuickSort算法的实现
- 19. 用foo算法实现hadoop
- 20. C5算法的实现?
- 21. 如何实现AO *算法?
- 22. 实现二次算法
- 23. MinMax堆算法实现
- 24. 树算法实现C#
- 25. 实现A *搜索算法
- 26. 实现A *寻路算法
- 27. 交叉算法的实现
- 28. 循环算法实现Java
- 29. Minimax算法JS实现
- 30. 实现多CPU FCFS算法
加两个大整数非常简单。添加和运载,添加和运载,添加和运载...减法同样容易。 Division稍微强硬一些,但它基本上只是在阵列上进行长时间的划分。 – Patashu 2013-05-08 00:28:37
我假设你说你存储的字符串中的数字,你的意思是一些适当的大k(如32)基数2^k数字的数组。使用字符串会很愚蠢。对于bignum操作,为什么不使用像'gmp'或者'mini-gmp'这样的已建立的C库? – Gene 2018-01-02 01:06:25
@Gene你是什么意思的“基数2^k数字数组”?你能给个例子吗? – Marko 2018-01-02 02:36:28