Pergunta

Eu estive brincando com alguns Projeto Euler problemas e naturalmente estou enfrentando muita long long números de tipo. Estou comprometido em usar o cacau e o Objective-C (preciso permanecer afiado para o trabalho), mas não consigo encontrar uma maneira elegante (leia: biblioteca) para lidar com esses números realmente grandes.

Eu adoraria usar o GMP, mas parece que usá -lo com o Xcode é um mundo completo de mágoa.

Alguém conhece alguma outra opção?

Foi útil?

Solução

Se eu fosse você, compilaria GMP fora do xcode e use apenas GMP.H e libgmp.a (ou libgmp.dylib) No meu projeto Xcode.

Outras dicas

Tente armazenar os dígitos nas matrizes.

Embora você tenha que escrever algumas novas funções para todos os seus problemas aritmáticos, mas foi assim que nos disseram para fazê -lo na faculdade.

Além disso, a velocidade dos cálculos foi bastante aprimorada, pois grandes números não eram muito grandes, afinal e não eram números realmente completamente

Veja se ajuda

Saudações

vBigNum dentro vecLib implementa números números de 1024 bits (assinados ou não assinados). Isso é grande o suficiente?

Se você quisesse usar o MATLAB (ou qualquer coisa próxima), pode olhar para a minha implementação de um grande formulário inteiro (VPI) na troca de arquivos.

É bastante simples. Armazene cada dígito separadamente. Adicionar e subtrair são simples, basta implementar uma operação de transporte. Multiplies são melhores usando a convolução, depois um transporte. Implementar operadores de divisão e mod, depois uma operação de powermod, útil para muitos dos problemas de PE. Os poderes são fáceis - apenas quadrilha e multiplicação repetidas, com base na representação binária do expoente.

Isso permitirá que você resolva muitos problemas de PE.

Eu também tive a brilhante idéia de tentar alguns problemas de projeto de Euler com cacau/Objective-C e achei frustrante. Eu já usei Java e talvez algum PHP. eu postei Meu problema exato neste tópico.

Eu sempre pensei em usar uma trapaça da biblioteca para este projeto. Basta escrever uma aula com as coisas que você precisa. E não tenha medo de usar Malloc e Uint64_T e assim por diante. Nsnumber é não Uma boa ideia em muitos casos.

Por outro lado, há muitos problemas em que a solução óbvia exigiria um número enorme a enorme número, e o truque é encontrar uma maneira de resolver o problema sem usar esses números enormes. (Por exemplo, qual é a soma dos últimos mil dígitos de 1.000.000 fatoriais)?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top