理論上可行嗎?即使BigIntegers
也應該失敗,AFAIK,因爲它們在內部基於陣列,並且這些尺寸有限。是否可以使用Java中的googolplexes的指數形式直接計算?例如:((10^10^100)/2)-5
如何使用googol或java中的更大數字來計算?
如何準備一個應用程序,該應用程序將googol大小的數字視爲真正的結果?
(對於那些不知道是誰:一個googol == 10^100
,一個googolplex == 10^10^100
)
理論上可行嗎?即使BigIntegers
也應該失敗,AFAIK,因爲它們在內部基於陣列,並且這些尺寸有限。是否可以使用Java中的googolplexes的指數形式直接計算?例如:((10^10^100)/2)-5
如何使用googol或java中的更大數字來計算?
如何準備一個應用程序,該應用程序將googol大小的數字視爲真正的結果?
(對於那些不知道是誰:一個googol == 10^100
,一個googolplex == 10^10^100
)
我想你應該嘗試象徵性的數學庫。符號數學庫對等式結構執行操作,不要嘗試在內部表示數字。
一些鏈接開始:
https://code.google.com/p/symja/
http://www4.ncsu.edu/~kaltofen/bibliography/99/BCK99.pdf
好運。
謝謝,就是我在找的東西! – 2014-09-20 09:19:10
把它想象成如何計算科學計數法: 例如2.574e100 * 4.762e15724可以計算爲(2.574 * 4.762)e(100 * 15724),而不是分別計算2.574e100和4.762e15724,然後將它們相乘。
所以理論上可行,而且不難實現。 Googol可以用兩個整數10和100來表示,就像您在說「一個googol == 10^100」時所做的那樣。
上面我說的更簡單的解釋是這樣的: 你不會把googol寫成1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,你會把它寫成10^100。讓電腦也一樣。
爲什麼不使用BigInteger
? 這個工程:
String googolString = "1";
for (int i = 0; i < 100; ++i) {
googolString += "0";
}
BigInteger googol = new BigInteger(googolString);
String googolPlexString = "1";
BigInteger googolPlex;
for (int i = 0; i < googolString.length() - 1; ++i) {
for (int j = 0; j < 100; ++j) {
googolPlexString += "0";
}
}
googolPlex = new BigInteger(googolPlexString);
googolPlex = googolPlex.divide(new BigInteger("2"));
googolPlex = googolPlex.subtract(new BigInteger("5"));
但是,是的存儲數量,數量不限的象徵,而是一個數字的二進制表示將足夠大量是不可能的。
我認爲只有BigInteger的失敗時,你的記憶是永遠out.I一個encontered整數,將填補該BigInteger的int數組超出大小限制(這是2 * 4 = 8G) – BlackJoker 2014-09-20 08:22:34
@ J.Rush根據[本數學答案](http://math.stackexchange.com/questions/42764/how-to-calculate-the-disk-space-required-to-store-googolplex)你需要大約'3.867e90千兆字節'來存儲googolplex,這不適合8G。 – Volune 2014-09-20 08:28:07
@ J.Rush googolplex的方式太大了,無法適應任何當前計算機的內存。大約10^100位,而8GB只有大約10^10位。即使您用另一臺8GB計算機替換了計算機內存中的每一位,也不會代表googolplex。 – amalloy 2014-09-20 08:30:37