Действительно большие числа и Objective-C

Я играл с некоторыми проблемами Project Euler и, естественно, сталкивался со многими проблемами, требующими обработки больших, чем long long введите числа. Я намерен использовать Cocoa и Objective-C (мне нужно оставаться в тонусе для работы), но не могу найти элегантный способ (читай: библиотеку) для обработки этих действительно больших чисел.

Я бы хотел использовать GMP, но звучит так, будто использование его с Xcode — это полный мир боли.

Кто-нибудь знает какие-нибудь другие варианты?


person tmh    schedule 23.06.2009    source источник


Ответы (6)


На вашем месте я бы скомпилировал gmp вне XCode и использовал только gmp.h и libgmp.a (или libgmp.dylib) в своем XCode. проект.

person diciu    schedule 23.06.2009
comment
Привет! Я сделал это GMP + Xcode. Но не работает разделение. Подробности здесь: stackoverflow.com/questions/11037165/ - person János; 14.06.2012

Попробуйте хранить цифры в массивах.

Хотя вам придется написать несколько новых функций для всех ваших арифметических задач, но именно так нам сказали делать это в колледже.

Кроме того, скорость вычислений была значительно улучшена, поскольку большие числа в конце концов не были действительно большими и вообще не были числами.

посмотрите, поможет ли это

С Уважением

person OrangeRind    schedule 23.06.2009

vBigNum в vecLib реализует 1024-битные целые числа (со знаком или без знака). Это достаточно большой?

person cbr    schedule 29.04.2012

Если вы хотите использовать Matlab (или что-то подобное), вы можете посмотреть на мою реализацию большой целочисленной формы (vpi) при обмене файлами.

Это довольно просто. Храните каждую цифру отдельно. Сложения и вычитания просты, просто реализуйте операцию переноса. Умножения лучше всего выполнять с помощью свертки, а затем переноса. Реализуйте операторы деления и модификации, а затем операцию powermod, полезную для решения многих задач PE. Степени просты - просто повторение возведения в квадрат и умножение, основанное на двоичном представлении показателя степени.

Это позволит вам решить многие проблемы PE.

person Community    schedule 24.06.2009

Мне тоже пришла в голову блестящая идея попробовать решить некоторые проблемы Euler Project с Cocoa/Objective-C, и я нашел это разочаровывающим. Раньше я использовал Java и, возможно, немного PHP. Я опубликовал мою точную проблему в этой теме.

person Muskie    schedule 02.02.2013

Я всегда рассматривал возможность использования читинга библиотек для этого проекта. Просто напишите класс с вещами, которые вам нужны. И не бойтесь использовать malloc, uint64_t и так далее. NSNumber во многих случаях не является хорошей идеей.

С другой стороны, есть много проблем, где для очевидного решения потребуются огромные или чрезвычайно огромные числа, и хитрость заключается в том, чтобы найти способ решить проблему без использования этих огромных чисел. (Например, какова сумма последней тысячи цифр факториала 1 000 000)?

person gnasher729    schedule 02.04.2014