我正在尋找一些方法來處理都在幾千萬的數字,可以在這個水平上做數學號碼。我可以使用Java和一些Python。因此,其中一個庫的圖書館會很方便,但是一個可以處理這些數字的程序也可以工作。有沒有人有什麼建議?程序或庫來處理龐大的數字
感謝
我正在尋找一些方法來處理都在幾千萬的數字,可以在這個水平上做數學號碼。我可以使用Java和一些Python。因此,其中一個庫的圖書館會很方便,但是一個可以處理這些數字的程序也可以工作。有沒有人有什麼建議?程序或庫來處理龐大的數字
感謝
對於Java,看看內置類BigInteger
和BigDecimal
。 BigInteger
號碼的可用內存大小受限制。 BigDecimal
可以與多達2 位小數點的右側(在實際中,還通過可用內存的限制)表示任意大的基極 - 10個號碼。
上述這些問題都限制非常基本的數學運算。 (算術,整數冪等,沒有根,日誌等)如果你需要比這更多的東西,請查閱Java Numerics page of NIST的庫列表。 (該Apfloat package支持任意精度超越函數和複雜的數學。)
Python可以處理大數字,而無需任何庫。
>>> 100 ** 100
1000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000L
雖然被別人的建議,你可能要使用gmpy如果你想要額外的速度。
在Java中,您可以使用BigInteger。
但這個數字是數以百萬計的數字長 – inspectorG4dget
inspectorG4dget不10S:當然我也嘗試發佈數以千萬計的例子位第一,但隨後的StackOverflow說,帖子是太長了,所以我做了一個較短的例子,而不是。但我認爲你應該能夠明白這一點。請使用一點想象力。 –
你有沒有試過類似'10 ** 10000000 + 1'的東西? – Junuxx
BigDecimal應該足夠好。但是,你可以看看JScience
你需要什麼樣的數學運算的?
的Java已經提供了類,如java.math.BigDecimal中或java.math.BigInteger中,你可以用來做基本的東西(加法,乘法等)
對於Python,我建議gmpy,一個Python包裝器GNU Bignum library。雖然Python做理論上處理任意大的整數(只受內存限制),這是罰款幾千位左右的數字,這是不是真的很適合處理百萬位數的整數。它不使用最先進的算法進行快速乘法,數字轉換和其他標準操作。相反,gmpy
被設計爲處理這種數量的數量。
下面是一些示例時序,示出了即使是幾千位gmpy
比Python的內建多頭基本上更快:
$ python -m timeit -s "from gmpy import mpz" "str(mpz(10)**10000)"
1000 loops, best of 3: 575 usec per loop
$ python -m timeit "str(10**10000)"
100 loops, best of 3: 11.8 msec per loop
的一旁:在某些時候,的的Python核心開發者之一試圖替換Python的一個使用GMP的長整型實現。事實證明,它實際上減慢了Python的日常非巨大整數用例。有關詳細信息,請參見http://bugs.python.org/issue1814。
BigInteger和BigDecimal有什麼問題尋找一個類庫可以使用這種數據類型來處理類型的jabs? –
會玩'sys.maxint'幫助嗎? – inspectorG4dget
認爲是matlab? –