2009-02-19 112 views
22

在C中处理巨大数字的最简单方法是什么?我需要将值存储在区域1000^900 ...BigInteger in C?

有没有人知道一个简单的方法来做到这一点?任何帮助真的会很感激!

+0

1000^900真的很大,并且由于内存限制,它可能会给大整数带来问题。你可能需要一些符号计算的东西,这样你可以保持1000^900的值。 – jww 2014-10-12 05:26:43

回答

31

使用libgmp

GMP是高精度计算一个免费的图书馆,上有符号整数,有理数和浮点数操作。没有实际的限制,除了在GMP运行在机器的可用内存暗示的那些精密...

从版本6,GMP是双许可证,GNU LGPL v3GNU GPL v2下发布...

GMP的主要目标平台是Unix类型系统,例如GNU/Linux,Solaris,HP-UX,Mac OS X/Darwin,BSD,AIX等。它也可以在Windows上以32位和64位方式工作位模式...

+0

GMP可以处理的数字大至1000^900? – jww 2017-08-29 17:57:15

+1

我还没有测试过,但它会显示“除了可用内存所暗示的精度之外,没有对精度的实际限制”。一个快速估计是1000⁹⁰⁰<1024⁹⁰⁰,它适合于不到9000位。我没有理由认为它应该打破GMP。 – kmkaplan 2017-08-31 13:58:12

10

有几个库可以帮助你做到这一点(任意精度数学):

假设这是不相关的工作(即你这样做是为了好玩或它的一个业余爱好,或只是一个oportunity学习的东西),编码了一个库,用于任意精度数学是一个比较有意思的项目。但是,如果你需要绝对依赖它,并且对这些坚果和螺栓不感兴趣,那就使用一个库。

5

有很多库可以处理大量的数字。你需要整数还是浮点算术?

您可以查看Python中为该任务构建的代码。

你可以看看Perl的扩展任务。

您可以查看OpenSSL中用于该任务的代码。

您可以查看GNU MP(多精度)库 - 如kmkaplan所述。