[C con Clase] Trabajar con números exageradamente grandes.

Giancarlo Dotta gcdotta en gmail.com
Mar Jun 24 18:03:13 CEST 2014


Hola Julio, puedo decirte que  trabajé hace más de 30 años con números de
longitud muy grande y se solía hacer con aritmética modular, es decir en
lugar de almacenar el número tal cual lo conocemos nosotros (ya sea en
binario partido en trozos o como cadena) se guardaba en un array con los
restos (módulos) de dividir ese número por un conjunto de números primos. O
sea que ese array tenía los siguientes elementos (N % 2, N%3, N%5, N%7,
N%11, ...). Resulta que con un número almacenado así, podías hacer las
operaciones básicas sobre esos restos y al final reconstruir el resultado
con un algoritmo que ahora ya no recuerdo y que se llamaba algo así como
"teorema del resto chino". Esta manera de hacer las operaciones es mucho
más sencilla de programar y rápida de ejecutar que, por ejemplo, tratar de
multiplicar dos listas de trozos de número.
En esto se basaban los cálculos usados en álgebra computerizada y
probablemente sea la base de las librerías que te han contado aquí.
En google habrá más información de todo esto porque la verdad es que yo ya
apenas me acuerdo.
Ciao,
Giancarlo


El 20 de junio de 2014, 20:50, José Luis Torre <
joseluistorrehernandez en gmail.com> escribió:

> Hola Julio:
>
> Si nos explicas qué es lo que quieres hacer con estos números, quizás
> podríamos orientarte algo mejor.
>
> Saludos
> José Luis
>
>
>
> El 19 de junio de 2014, 17:09, Julio Cesar <ggeatom en gmail.com> escribió:
>
>> Buenas tardes, gracias por responder y una disculpa por no haber sido
>> preciso en mi pregunta. A lo que me referia Facundo era a si C genera de
>> manera automatica un binario asociado a un numero de, por ejemplo, 500
>> cifras. Pero por lo que mencionas, entiendo que no lo hace pues es
>> imposible hacerlo con 32 o 64 bits (dependiendo el procesador). A modo de
>> ejemplo y para dar luz a mi pregunta, tomemos el numero
>> 999,999,999,999,999,999,999,999,999,999,999,999 999,999,999,999,999,999 a
>> este numero C no le asocia un binario de forma automatica, si estoy mal
>> corrigeme. Además mi idea noto se reafirma un poco, pues noto que en el
>> ejemplo de Ivan, cuando el pasa el numero, no lo pasa tal cual como un
>> numero, mas bien, como una cadena.
>>
>> Así que supongo para numeros muy grandes, en un principio los debo tratar
>> como una cadena para despues pasarlo a la estructura (o la clase) definida
>> en la cual ya tengo sobrecargados los operadores.
>>
>> Me han ayudado demasiado a entender un poco más este problema, muchas
>> gracias a todos, que tengan buen día.
>>
>> Julio Cesar
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
>
> --
> José Luis Torre
> ww.ehu.es
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140624/33f40272/attachment.html>


Más información sobre la lista de distribución Cconclase