2008-11-07 114 views

回答

1

幾種語言都支持任意大數字。例如,您可以使用Mathematica。我在Mathematica中嘗試了你的例子,結果有45,155位數字。我在Unix機器上嘗試了與bc相同的例子。 bc支持擴展的精度,但不能擴展;它在這個例子上轟炸了。

0

我不知道C#,但我知道Ruby編程語言有BigDemical類,它似乎允許無限大小的數字。

3

如果C#沒有被投入石頭,並且你想要一些剛開箱即用的東西,那麼有幾種選擇。我最清楚的是Python,但我認爲像Scheme和Ruby這樣的語言也支持大數字。

Python:2**150000。大約1秒後打印結果。

如果你想要免費的數學軟件,請看Maxima或Sage。

+0

只是一個數據點,mzscheme在計算(expt 2 150000)與2 ** 150000時感覺比Python快得多 – Javier 2008-11-07 22:53:48

1

Lisp是你的朋友。默認的biginteger數字。

1

我覺得使用沒有任意大數字的語言非常令人沮喪:在大多數數字上能夠使用普通運算符(如添加)似乎是無意義的,但僅僅因爲它的原因而必須切換到BigInt實例上的方法調用尺寸。

一大堆語言有更完整的數字塔,並在需要時無縫脅迫;例如,Allegro Common Lisp在1ms內評估並打印(實驗2 150000)的所有45,155位數字。

cl-user(2): (time (expt 2 150000)) 
; cpu time (non-gc) 0 msec user, 0 msec system 
; cpu time (gc)  0 msec user, 0 msec system 
; cpu time (total) 0 msec user, 0 msec system 
; real time 1 msec 
; space allocation: 
; 2 cons cells, 18,784 other bytes, 0 static bytes 
1

C中有一種產品叫calc,它是一個任意精度計算器。我用它作爲一次研究員工作時,發現它相當簡單使用...

http://sourceforge.net/projects/calc/

它可以通過編程對困難或長計算,並能接受來自命令行參數。在交互模式下,它一次接受一個命令,並顯示答案。

通常的命令是簡單地表述如:

3 * (4 + 1) 

和calc將打印:

15 

計算值確實算術運算符+, - ,/ *以及^(冪),%(模數)和//(整數除法)。

例如:

3 * 19^43 - 1 

會產生:

29075426613099201338473141505176993450849249622191102976 

計算值的值可能會非常大。例如:

2^23209 - 1 

會打印:

402874115778988778181873329071 ... loads of digits ... 3779264511 

希望這有助於...

0

Python有一個BIGNUM庫。如果你需要用另一種語言實現一個bignum庫,你至少可以使用Python作爲參考來驗證你的工作。請注意,如果您不知道自己要找什麼,bignums會有一些實施細節並不是很明顯。

2

您也可以考慮使用Frink,它是一種具有處理測量單位本機功能的語言。 它毫不費力地計算2^150000,處理分數(例如1/3 + 2/5 - > 11/15),計算3米+2英寸 - > 3.0508米,是一種完整的編程語言。

弗林克 - 版權所有2000-2008艾倫Eliasen,[email protected] http://futureboy.us/frinkdocs/