Domanda

Sono stato in giro con alcuni Project Euler e naturalmente sto incontrando molti che richiedono la gestione di numeri più grandi di long long . Mi impegno a utilizzare Cocoa e Objective-C (ho bisogno di rimanere forte per lavoro) ma non riesco a trovare un modo elegante (leggi: libreria) per gestire questi numeri davvero grandi.

Mi piacerebbe usare GMP ma sembra che usarlo con Xcode sia un mondo completamente ferito.

Qualcuno conosce altre opzioni?

È stato utile?

Soluzione

Se fossi in te compilerei gmp all'esterno di XCode e userei solo gmp.h e libgmp.a (o libgmp.dylib) nel mio progetto XCode.

Altri suggerimenti

Prova a memorizzare le cifre negli array.

Anche se dovrai scrivere alcune nuove funzioni per tutti i tuoi problemi aritmici, ma è così che ci è stato detto di farlo al college.

Inoltre la velocità dei calcoli è stata piuttosto migliorata poiché i grandi numeri non erano molto grandi dopotutto e non erano numeri del tutto

vedi se aiuta

Per quanto riguarda

vBigNum in vecLib implementa numeri interi a 1024 bit (con o senza segno). È abbastanza grande?

Se volessi usare matlab (o qualcosa di simile) potresti guardare la mia implementazione di un grande numero intero (vpi) sullo scambio di file.

È piuttosto semplice. Memorizza ogni cifra separatamente. Aggiunte e sottrazioni sono semplici, basta implementare un'operazione carry. Le moltiplicazioni sono fatte meglio usando la convoluzione, quindi un carry. Implementa operatori di divisione e mod, quindi un'operazione powermod, utile per molti dei problemi di PE. I poteri sono facili - solo ripetute quadrate e moltiplicazioni, basate sulla rappresentazione binaria dell'esponente.

Questo ti permetterà di risolvere molti problemi di PE.

Anche io ho avuto la brillante idea di provare alcuni problemi del Progetto Euler con Cocoa / Objective-C e l'ho trovato frustrante. In precedenza ho usato Java e forse un po 'di PHP. Ho pubblicato il mio esatto problema in questa discussione.

Ho sempre pensato di usare una libreria che tradiva questo progetto. Basta scrivere una lezione con le cose di cui hai bisogno. E non abbiate paura di usare malloc e uint64_t e così via. NSNumber è non una buona idea in molti casi.

D'altra parte, ci sono molti problemi in cui la soluzione ovvia richiederebbe numeri da enormi a enormemente enormi, e il trucco è trovare un modo per risolvere il problema senza usare questi numeri enormi. (Ad esempio, qual è la somma delle ultime mille cifre di 1.000.000 fattoriali)?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top