Números realmente grandes e objetiva-c
-
06-07-2019 - |
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?
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)?