Действительно Большие числа и Objective-C
-
06-07-2019 - |
Вопрос
Я тут поиграл с некоторыми Проект Эйлера проблем, и, естественно, я сталкиваюсь со многими, которые требуют обработки большего, чем long long
введите числа.Я привержен использованию Cocoa и Objective-C (мне нужно оставаться начеку для работы), но не могу найти элегантный способ (читать:библиотека) для обработки этих действительно больших чисел.
Я бы с удовольствием использовал GMP, но, похоже, использовать его с Xcode - сплошная обида.
Кто-нибудь знает о каких-либо других вариантах?
Решение
На вашем месте я бы скомпилировал gmp вне XCode и использовал бы только gmp.h и libgmp.a (или libgmp.dylib) в моем проекте XCode.
Другие советы
Попробуйте сохранить цифры в виде массивов.
Хотя вам придется написать несколько новых функций для всех ваших арифметических задач, но именно так нам сказали делать в колледже.
Кроме того, скорость вычислений была значительно улучшена, так как большие числа, в конце концов, не были действительно большими и вообще не были числами
посмотрим, поможет ли это
с уважением
vBigNum
в vecLib
реализует 1024-битные целые числа (со знаком или без знака). Это достаточно большой?
Если вы хотите использовать matlab (или что-то похожее), вы можете посмотреть на мою реализацию большой целочисленной формы (vpi) на файлообменнике.
Это довольно просто. Храните каждую цифру отдельно. Сложение и вычитание просты, просто реализовать операцию переноса. Умножения лучше всего делать с использованием свертки, а затем переноса. Реализуйте операторы split и mod, затем операцию powermod, полезную для многих проблем PE. Степени просты - просто повторное возведение в квадрат и умножение, основанное на двоичном представлении показателя.
Это позволит вам решить многие проблемы с PE.
Мне тоже пришла в голову блестящая идея попробовать некоторые проблемы проекта Эйлера с Cocoa / Objective-C, и они меня расстроили. Ранее я использовал Java и, возможно, немного PHP. Я разместил мою точную проблему в этой теме.
Я всегда думал об использовании чит-библиотеки для этого проекта. Просто напишите класс с вещами, которые вам нужны. И не бойтесь использовать malloc, uint64_t и так далее. NSNumber не - хорошая идея во многих случаях. Р>
С другой стороны, существует много проблем, где очевидное решение потребовало бы огромных или огромных количеств, и хитрость заключается в том, чтобы найти способ решить проблему без использования этих огромных чисел. (Например, какова сумма последней тысячи цифр факториала 1 000 000)?