BigInteger в C? - PullRequest
       13

BigInteger в C?

25 голосов
/ 19 февраля 2009

Какой самый простой способ обрабатывать огромные числа в C? Мне нужно хранить значения в области 1000 ^ 900 ...

Кто-нибудь знает простой способ сделать это? Буду признателен за любую помощь!

Ответы [ 3 ]

32 голосов
/ 19 февраля 2009

Использование libgmp :

GMP - это бесплатная библиотека для арифметики произвольной точности, работающая со целыми числами со знаком, рациональными числами и числами с плавающей запятой. Нет никаких практических ограничений на точность, кроме тех, которые подразумеваются в доступной памяти на машине, на которой работает GMP ...

Начиная с версии 6, GMP распространяется под двойными лицензиями: GNU LGPL v3 и GNU GPL v2 ...

Основными целевыми платформами GMP являются системы Unix-типа, такие как GNU / Linux, Solaris, HP-UX, Mac OS X / Darwin, BSD, AIX и т. Д. Также известно, что они работают в Windows как в 32-разрядных системах, так и в Windows. и 64-битный режим ...

11 голосов
/ 19 февраля 2009

Есть несколько библиотек, которые помогут вам в этом (математика произвольной точности):

Если предположить, что это не связано с работой (т. Е. Вы делаете это ради удовольствия, или это хобби или просто возможность чему-то научиться), кодирование библиотеки для математики произвольной точности является относительно интересным проектом. Но если вам нужно полностью положиться на него и не интересоваться гайками и болтами, просто используйте библиотеку.

5 голосов
/ 19 февраля 2009

Существует множество библиотек для обработки огромных чисел. Вам нужна целочисленная или арифметика с плавающей точкой?

Вы можете посмотреть на код, встроенный в Python для этой задачи.

Вы можете посмотреть расширения для Perl для этой задачи.

Вы можете посмотреть код в OpenSSL для этой задачи.

Вы можете посмотреть библиотеку GNU MP (multi-precision) - как упомянуто kmkaplan.

...