2009-06-23 9 views
2

Je ai été en train de jouer avec certains Project Euler problèmes et naturellement courir dans un lot qui nécessitent la manipulation de plus de long long numéros de type. Je m'engage à utiliser Cocoa et Objective-C (je dois rester vigilant pour le travail) mais je ne trouve pas de manière élégante (lire: library) pour gérer ces très gros nombres. Je voudrais utiliser GMP, mais il semble que l'utiliser avec Xcode est un monde complet de blessures.Vraiment Big Numbers et Objective-C

Est-ce que quelqu'un connaît d'autres options?

Répondre

3

Si je vous, je voudrais compiler gmp en dehors de XCode et utiliser seulement gmp.h et libgmp.a (ou libgmp.dylib) dans mon projet XCode.

+0

Hey! J'ai fait ce GMP + Xcode. Mais pas un événement une division fonctionne.Détails ici: http://stackoverflow.com/questions/11037165/which-library-should-i-use-on-osx-for-arbitrary-precision-arithmetic –

1

Essayez de stocker les chiffres dans les tableaux.

Bien que vous deviez écrire de nouvelles fonctions pour tous vos problèmes arithmatiques, mais c'est comme cela qu'on nous a dit de le faire au collège.

plus la vitesse des calculs a été assez améliorée grand nombre ne sont pas vraiment grand et après tout ne sont pas des nombres vraiment tout à fait

voir si elle aide

ce qui a trait

0

Si vous souhaitez utiliser matlab (ou quoi que ce soit de proche), vous pouvez consulter mon implémentation d'un grand nombre entier (vpi) sur l'échange de fichiers.

C'est plutôt simple. Stockez chaque chiffre séparément. Les ajouts et soustractions sont simples, il suffit d'implémenter une opération de report. Les multiplications sont mieux faites en utilisant la convolution, puis un carry. Implémenter des opérateurs de division et de mod, puis une opération de powermod, utile pour de nombreux problèmes de PE. Les pouvoirs sont faciles - juste équarris et la multiplication répétée, basée sur la représentation binaire de l'exposant.

Cela vous permettra de résoudre de nombreux problèmes de PE.

1

vBigNum dans vecLib implémente des entiers de 1024 bits (signés ou non signés). Est-ce assez grand?

+1

Ne fonctionne pas avec iOS :( –

0

J'ai aussi eu la brillante idée d'essayer certains problèmes du projet Euler avec Cocoa/Objective-C et je l'ai trouvé frustrant. J'ai déjà utilisé Java et peut-être un peu de PHP. J'ai posté my exact problem in this thread.

0

J'ai toujours envisagé d'utiliser une triche de bibliothèque pour ce projet. Écris juste un cours avec les choses dont tu as besoin. Et n'ayez pas peur d'utiliser malloc et uint64_t et ainsi de suite. NSNumber est pas une bonne idée dans de nombreux cas. D'autre part, il existe de nombreux problèmes où la solution évidente nécessiterait des nombres énormes à énormément énormes, et l'astuce consiste à trouver un moyen de résoudre le problème sans utiliser ces nombres énormes. (Par exemple, quelle est la somme des derniers milliers de 1.000.000 factoriels)?