2008-11-07 75 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/