¿Qué estructura de datos se usa para calcular enteros muy largos, por ejemplo, el número primo más grande?

Una secuencia de “dígitos” podría usarse típicamente para almacenar números muy grandes. Para reducir el número de dígitos y mejorar el embalaje, sería aconsejable utilizar una base más alta que los diez tradicionales. Una base de 32 o incluso 64 (dependiendo de la arquitectura de la máquina) haría la representación más compacta.

Para la parte de secuencia, un vector debería ser una buena opción para la representación. El número de reasignaciones podría reducirse estimando el número de “dígitos” necesarios para la representación. Por supuesto, también podría usarse una lista, pero incurrirá en algo de memoria adicional.

La parte más compleja sería proporcionar operaciones básicas como suma, resta, etc. para la representación anterior. Dado el gran tamaño esperado de los números, sería imperativo utilizar algoritmos paralelos para estas operaciones.

Sin embargo, la mayoría de los lenguajes de programación proporcionan algunas bibliotecas para trabajar en enteros largos. Por ejemplo, Java tiene BigInteger y también está The GNU MP Bignum Library.