Question

J'ai eu quelques problèmes avec le Project Euler et je suis naturellement confronté à de nombreux problèmes nécessitant un traitement nombre supérieur à long long . Je me suis engagé à utiliser Cocoa et Objective-C (je dois rester vigilant au travail) mais je ne trouve pas de moyen élégant (lire: bibliothèque) pour gérer ces très gros chiffres.

J'adorerais utiliser GMP, mais on dirait que l'utiliser avec Xcode est un monde de blessures.

Quelqu'un connaît-il d'autres options?

Était-ce utile?

La solution

Si j'étais vous, je compilerais gmp en dehors de XCode et n'utiliserais que gmp.h et libgmp.a (ou libgmp.dylib) dans mon projet XCode.

Autres conseils

Essayez de stocker les chiffres dans des tableaux.

Bien que vous deviez écrire de nouvelles fonctions pour tous vos problèmes arithmatiques, mais c’est ce qui nous a été dit de le faire à l’université.

De plus, la vitesse de calcul a été sensiblement améliorée car les grands nombres n'étaient pas vraiment grands après tout et n'étaient pas vraiment des chiffres

voir si cela aide

salutations

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

Si vous vouliez utiliser matlab (ou quelque chose de proche), vous pouvez regarder mon implémentation d'une forme de grand entier (vpi) sur l’échange de fichiers.

C'est plutôt simple. Stockez chaque chiffre séparément. Les ajouts et les soustractions sont simples, il suffit de mettre en œuvre une opération de report. Les multiplications sont mieux faites en utilisant la convolution, puis un report. Implémentez les opérateurs divide et mod, puis une opération powermod, utile pour la plupart des problèmes de PE. Les pouvoirs sont faciles - il suffit de répéter la quadrature et la multiplication, en se basant sur la représentation binaire de l'exposant.

Cela vous permettra de résoudre de nombreux problèmes d’éducation physique.

J'ai moi aussi eu la brillante idée de tenter quelques 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é mon problème exact dans ce fil.

J'ai toujours envisagé d'utiliser une bibliothèque qui triche pour ce projet. Il suffit d'écrire une classe avec les choses dont vous avez besoin. Et n'ayez pas peur d'utiliser malloc, uint64_t, etc. NSNumber n'est pas une bonne idée dans de nombreux cas.

D’autre part, il existe de nombreux problèmes pour lesquels la solution évidente nécessiterait des nombres énormes, voire énormes, et le truc consiste à trouver le moyen de résoudre le problème sans utiliser ces énormes nombres. (Par exemple, quelle est la somme des mille derniers chiffres de 1 000 000 factorielle)?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top