如何乘兩個超過32個字符的非常大的數字,例如乘以100!與122!或22^122與11^200的分而治之幫助下,任何機構都有java代碼或C#代碼嗎?超大整數的快速乘法
回答
我寫了一個自己使用數組來完成這一切,只是爲了好玩。我相信Java的BigInteger類會做同樣的事情。
Here是C#中的一個示例,可能對您有用。
Here's some integer multiplication algorithms
Here's a class library for numbers
它包括大整數乘以Karatsuba和Schonhage-Strassen的算法。
您應該使用java.math.BigInteger。這允許表示整數值遠遠超過2^32或甚至2^64。 BigInteger值本質上僅受程序可用內存量的限制,即32位系統上的〜4 GB以及64位系統的可用物理+虛擬內存。
import java.math.BigInteger;
class Foo
{
public static void main(String args[])
{
BigInteger bigInteger100Fact = bigFactorial(BigInteger("100")); //where bigFactorial is a user-defined function to calculate a factorial
BigInteger bigIntegerBar = new BigInteger("12390347425734985347537986930458903458");
BigInteger product = bigIntegerFact.multiply(bigIntegerBar);
}
}
編輯:這裏有一個BigInteger factorial function,如果你需要一個
是的,並且對於C#考慮intX,http://www.codeplex.com/IntX/ – 2010-01-04 00:02:44
請注意,BigInteger使用的是天真的乘法算法,因此如果需要快速乘法大數,你應該使用一個使用Karatsuba或者另一個子n^2算法的第三方庫。 – Voo 2011-11-06 01:08:53
使用Karatsuba和TOOM庫克化java.lang.BigInteger的Here is a patched version:
And here is a Java class可以使用乘BigIntegersSchönhage-施特拉森:
- 1. 大整數乘法(階乘)
- 2. 大整數乘法
- 3. 快速矩陣乘法
- 4. perl中很大數字的快速乘法
- 5. 快速讀取整數的大矩陣
- 6. 快速乘法和減法模
- 7. C中的快速乘法代碼
- 8. 大整數的並行乘法
- 9. 快速整數除法中的Java
- 10. 快速的方法來湊整數
- 11. 如何快速乘兩個最大的數組元素
- 12. 快速8x8bit乘法程序集pic18
- 13. 快速約束最小二乘法
- 14. 快速乘法問題 - 可可
- 15. 快速旋轉/變換矩陣乘法
- 16. 快速找到整數的整數
- 17. 大數乘法
- 18. 快速調整mmap文件的大小
- 19. 快速確切bigint階乘
- 20. 長整數乘法
- 21. 無整數乘法*
- 22. 快速調整大型畫布元素
- 23. 大數乘法的模數
- 24. 特定乘法的整數
- 25. 快速執行大量的整數計數器(在C/C++)
- 26. 快速大數據轉軸
- 27. 瞭解超快速模糊算法
- 28. R中的大數乘法
- 29. 非常大的整數乘法和加法
- 30. 無符號整數的快速無分支最大值
已使用相關語言 – 2010-01-03 22:50:57
閱讀乘法算法:http://en.wikipedia.org/wiki/Multiplication_algorithm – przemoc 2010-01-03 22:52:14
「分而治之」聽起來像是家常ķ。請正確填寫。 – 2010-01-03 23:15:54