29

在 C 中处理大量数字的最简单方法是什么?我需要将值存储在区域1000^900中,或者以更易于阅读的形式10^2700

有谁知道一个简单的方法来做到这一点?任何帮助将不胜感激!

4

4 回答 4

33

使用libgmp

GMP 是一个用于任意精度算术的免费库,可对有符号整数、有理数和浮点数进行运算。除了运行 GMP 的机器中的可用内存所暗示的精度之外,精度没有实际限制……

从版本 6 开始,GMP 在双重许可下分发,GNU LGPL v3GNU GPL v2 ...

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

于 2009-02-19T12:46:12.077 回答
11

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

假设这与工作无关(即,您这样做是为了好玩,或者它是一种爱好,或者只是一个学习一些东西的机会),为任意精度数学编写一个库是一个相对有趣的项目。但是,如果您需要完全依赖它并且对具体细节不感兴趣,请使用库。

于 2009-02-19T12:47:26.053 回答
4

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

您可以查看 Python 中内置的用于该任务的代码。

您可以查看该任务的 Perl 扩展。

您可以查看 OpenSSL 中的代码以执行该任务。

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

于 2009-02-19T12:50:00.600 回答
0

你也可以试试openssl的BIGNUMs,见https://www.openssl.org/docs/man1.0.2/man3/bn.html , https://www.openssl.org/docs/man1.1.1/man3/ ,将作为字符串给出的大数字转换为 OpenSSL BIGNUM以获取详细信息。

于 2020-12-21T03:39:48.517 回答