【发布时间】:2013-01-21 07:51:21
【问题描述】:
你能推荐一些好的语言来做大数的数学运算吗?
到目前为止,我已经使用了 Actionscript 2 和 Objective-c,甚至使用了 Objective-c NSDecimalNumbers 我在计算中被限制为 32 位...我至少需要能够用数字进行计算五万位数。
【问题讨论】:
标签: math programming-languages calculator largenumber
你能推荐一些好的语言来做大数的数学运算吗?
到目前为止,我已经使用了 Actionscript 2 和 Objective-c,甚至使用了 Objective-c NSDecimalNumbers 我在计算中被限制为 32 位...我至少需要能够用数字进行计算五万位数。
【问题讨论】:
标签: math programming-languages calculator largenumber
Python 具有任意长度的整数,并且可以透明地使用它们,因此您不需要任何特殊的代码或类。
>>> len(str(math.factorial(123456)))
574965
【讨论】:
也许Haskell 会吸引你。
【讨论】:
也可以试试bc,它可能已经安装在你的机器上。
【讨论】:
如今,大多数语言都对任意长度的数字提供某种支持,无论是在语言本身还是通过某些外部库(例如 gmp)。
唯一重要的区别* 是语言内的集成程度。例如,在 C++、Python、Perl、SWI-Prolog、Haskell、C# 等中,可以使用标准数学运算符将大整数作为任何其他内置数字类型进行操作。另一方面,在不支持运算符重载的语言中,如 C、Objective-C、Java 等,您必须明确使用库函数。
根据您的应用程序中 big-int 操作的普遍性,是否切换到对 big-int 更友好的语言可能会有所回报。
更新
[*] 显然,正确性和速度也很重要。但是,由于大多数语言都在后台使用 GMP,因此在这方面不应该存在差异。也许像 Mathematica 或 Maple 这样的面向数学(而且价格昂贵!)的语言/应用程序提供自己的 big-int 实现在这里可以有一些优势。
【讨论】:
试试 java 的 BigInteger 类,或者你可以看看用 C 写一个小库。如果数学相当简单,你总是可以使用数组。
也许试试 Matlab(不确定)
【讨论】: