BigInteger em C?

Qual é a maneira mais fácil de lidar com números enormes em C? Eu preciso armazenar valores na área 1000 ^ 900 …

Alguém sabe de uma maneira fácil de fazer isso? Qualquer ajuda seria realmente apreciada!

Use libgmp :

O GMP é uma biblioteca livre para aritmética de precisão arbitrária, operando em inteiros com sinal, números racionais e números de ponto flutuante. Não há limite prático para a precisão, exceto os implícitos pela memory disponível na máquina em que o GMP é executado …

Desde a versão 6, o GMP é distribuído sob as licenças duplas, GNU LGPL v3 e GNU GPL v2 …

As principais plataformas de destino do GMP são sistemas do tipo Unix, como GNU / Linux, Solaris, HP-UX, Mac OS X / Darwin, BSD, AIX, etc. Ele também é conhecido por funcionar no Windows em 32 bits e 64 bits. modo de bits …

Existem algumas bibliotecas para ajudar você a fazer isso (matemática de precisão arbitrária):

  • BigDigits ;
  • iMath ;
  • decNumber ; e
  • sem dúvida outros.

Assumindo que isso não é relacionado ao trabalho (ou seja, você está fazendo isso por diversão ou é um hobby ou apenas uma oportunidade para aprender alguma coisa), codificar uma biblioteca para matemática de precisão arbitrária é um projeto relativamente interessante. Mas se você precisar confiar absolutamente nelas e não estiver interessado nas porcas e parafusos, basta usar uma biblioteca.

Existem várias bibliotecas para lidar com números enormes. Você precisa de aritmética de inteiros ou de ponto flutuante?

Você poderia olhar o código embutido no Python para a tarefa.

Você poderia olhar as extensões para o Perl para a tarefa.

Você poderia olhar o código no OpenSSL para a tarefa.

Você poderia olhar para a biblioteca GNU MP (multi-precisão) – como mencionado por kmkaplan.