C #: Как я должен обрабатывать арифметику с огромными числами? - PullRequest
8 голосов
/ 14 февраля 2010

Я пишу приложение, которое включает в себя арифметику с огромными числами, с очень большим количеством цифр. Ранее я написал класс, который упрощает обработку больших чисел, определяя их как строки, а затем используя медленные арифметические строковые функции. Это лучший способ сделать это? Если нет, то как мне подойти к этой проблеме? Есть ли в C # что-нибудь встроенное для таких ситуаций?

Ответы [ 5 ]

7 голосов
/ 14 февраля 2010

Если вы можете сделать это в .NET 4, System.Numeric.BigInteger может помочь. Если вы используете более старую версию .NET, IntX поможет вам.

Смотрите также этот этот вопрос о больших целых числах в C #.

6 голосов
/ 14 февраля 2010

.NET 4 будет встроено через тип BigInteger. Это, как утверждают, довольно хорошо настроено и должно работать очень хорошо.

Для 3.5 и более ранних версий вы можете получить реализацию BigInteger из Dynamic Language Runtime источников. (См., Например, http://dlr.codeplex.com/sourcecontrol/changeset/view/40021?projectName=dlr#694008 и детализация до Src / Runtime / Microsoft.Dynamic / Math.) Я не знаю, был ли он настроен так же высоко, как тип .NET 4 BigInteger, но он все равно должен быть более эффективнее, чем ваша строковая версия, потому что она внутренне представляет большие числа с использованием целочисленных типов и выполняет арифметику с использованием целочисленных операций.

1 голос
/ 14 февраля 2010

Класс Big Integer, который я много раз использовал для криптографических проектов (где требуется очень большое количество). Прекрасно работает.

http://www.codeproject.com/KB/cs/biginteger.aspx

1 голос
/ 14 февраля 2010

Библиотека GNU MP bignum - одна из самых быстрых. для этого есть оболочка .NET http://gnumpnet.codeplex.com/

Вот еще одна библиотека bignum для .NET с исходным кодом.

0 голосов
/ 01 октября 2012

В версии dotnet выше 4.0, System.Numerics.BigInteger поможет вам в этой проблеме.

если вы получили ошибку ссылки на сборку, используя приведенный выше синтаксис, добавьте ссылку, используя

http://www.dllme.com/dll/files/system_numerics_dll.html.

Надеюсь, это поможет вам ..!

...