【问题标题】:Best coding language for dealing with large numbers (50000+ digits)处理大数(50000+ 位)的最佳编码语言
【发布时间】:2013-01-21 07:51:21
【问题描述】:

你能推荐一些好的语言来做大数的数学运算吗?

到目前为止,我已经使用了 Actionscript 2 和 Objective-c,甚至使用了 Objective-c NSDecimalNumbers 我在计算中被限制为 32 位...我至少需要能够用数字进行计算五万位数。

【问题讨论】:

标签: math programming-languages calculator largenumber


【解决方案1】:

Python 具有任意长度的整数,并且可以透明地使用它们,因此您不需要任何特殊的代码或类。

>>> len(str(math.factorial(123456)))
574965

【讨论】:

    【解决方案2】:

    也许Haskell 会吸引你。

    【讨论】:

      【解决方案3】:

      也可以试试bc,它可能已经安装在你的机器上。

      【讨论】:

        【解决方案4】:

        如今,大多数语言都对任意长度的数字提供某种支持,无论是在语言本身还是通过某些外部库(例如 gmp)。

        唯一重要的区别* 是语言内的集成程度。例如,在 C++、Python、Perl、SWI-Prolog、Haskell、C# 等中,可以使用标准数学运算符将大整数作为任何其他内置数字类型进行操作。另一方面,在不支持运算符重载的语言中,如 C、Objective-C、Java 等,您必须明确使用库函数。

        根据您的应用程序中 big-int 操作的普遍性,是否切换到对 big-int 更友好的语言可能会有所回报。

        更新

        [*] 显然,正确性和速度也很重要。但是,由于大多数语言都在后台使用 GMP,因此在这方面不应该存在差异。也许像 Mathematica 或 Maple 这样的面向数学(而且价格昂贵!)的语言/应用程序提供自己的 big-int 实现在这里可以有一些优势。

        【讨论】:

          【解决方案5】:

          试试 java 的 BigInteger 类,或者你可以看看用 C 写一个小库。如果数学相当简单,你总是可以使用数组。

          也许试试 Matlab(不确定)

          【讨论】:

          • Matlab 与许多其他选择一样,依赖库或其他扩展来进行任意精度计算,它们不是内置的。此类库的质量各不相同。
          • MATLAB 确实有一个大整数工具,VPI,我自己的。我已经写了一个新的,基于更快的 Java 库。
          • Java 可能需要几个小时才能创建一个大型 BigInteger - 这是一场 Java 永远不会赢的竞赛。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多