BigInteger в C?
-
05-09-2019 - |
Вопрос
Как проще всего обрабатывать огромные числа в C?Мне нужно хранить значения в области 1000^900...
Кто-нибудь знает простой способ сделать это?Любая помощь будет очень признательна!
Решение
Использовать библиотека 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-битном, так и в 64-битном режиме...
Другие советы
Есть несколько библиотек, которые помогут вам в этом (математика произвольной точности):
- Большие цифры;
- iMath;
- номер декабря;и
- без сомнения, другие.
Если предположить, что это не связано с работой (т. е. вы делаете это ради развлечения, или это хобби, или просто возможность чему-то научиться), написание библиотеки для математических вычислений произвольной точности является относительно интересным проектом.Но если вам нужно полностью на это положиться и вас не интересуют подробности, просто воспользуйтесь библиотекой.
Существует множество библиотек для обработки огромных чисел.Вам нужна целочисленная арифметика или арифметика с плавающей запятой?
Вы можете посмотреть код, встроенный в Python для этой задачи.
Вы можете посмотреть расширения Perl для этой задачи.
Вы можете посмотреть код в OpenSSL для этой задачи.
Вы можете посмотреть библиотеку GNU MP (мультиточности), как упоминалось kmkaplan.