用于处理大量数字的程序或库

时间:2012-11-22 15:26:07

标签: java python math

我正在寻找一些方法来处理数千万位的数字,并且可以在这个级别进行数学运算。我可以使用Java和一些Python。因此,其中一个库可以方便,但是可以处理这些数字的程序也可以使用。有没有人有任何建议?

由于

5 个答案:

答案 0 :(得分:5)

对于Java,请查看内置类BigIntegerBigDecimalBigInteger数字的大小受可用内存的限制。 BigDecimal可以表示任意大的基数为10的数字,小数点右边最多有2个 32 数字(实际上,也受可用内存的限制)。

这些都限于相当基本的数学运算。 (算术,整数幂等。没有根,日志等)如果你需要更多的东西,请参考Java Numerics page of NIST的库列表。 (Apfloat package支持任意精度的超越函数和复杂的数学。)

答案 1 :(得分:5)

Python可以处理大数字而无需任何库。

>>> 100 ** 100
1000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000L

虽然如其他人所建议的那样,如果您想要更高的速度,可能需要使用gmpy


在Java中,您可以使用BigInteger

答案 2 :(得分:2)

对于Python,我推荐gmpyGNU Bignum library的Python包装器。虽然Python理论上 处理任意大整数(仅受内存限制),并且对于几千位左右的数字来说它很好,但它并不适合处理百万位数的整数。它不使用最先进的算法进行快速乘法,数字转换和其他标准操作。相比之下,gmpy旨在处理这种数量的数字。

以下是一些示例时序,表明即使是几千个数字gmpy也要比Python的内置长度快得多:

$ python -m timeit -s "from gmpy import mpz" "str(mpz(10)**10000)"
1000 loops, best of 3: 575 usec per loop
$ python -m timeit "str(10**10000)"
100 loops, best of 3: 11.8 msec per loop

抛开:在某些时候,其中一个Python核心开发人员尝试用直接使用GMP的Python替换Python的长整数实现。事实证明,它实际上减慢了Python对于日常非巨大整数用例的速度。有关详细信息,请参阅http://bugs.python.org/issue1814

答案 3 :(得分:1)

BigDecimal应该足够好了。但是,您可以查看JScience

答案 4 :(得分:0)

您需要什么样的数学运算?

Java已经提供了像java.math.BigDecimal或java.math.BigInteger这样的类,可以用来做基本的东西(加法,乘法等)。