Hola.
Estoy haciendo problemas en los que algunas variables guardan números muy grandes. Por ejemplo, quiero calcular la suma de los dígitos del resultado de hacer 2 ^1000
La función de sumar los dígitos he comprobado que está bien, y la función pow() sé usarla, por lo que he supuesto a que el resultado es incorrecto debido a que trabajo con números muy grandes:
#include <stdio.h>
#include <math.h>
int suma(long long int n)
{
if(n >= 0 && n < 10) return n;
else return n%10 + suma(n/10);
}
int main()
{
long long int num;
int resultado;
num = pow(2, 1000);
resultado = suma(num);
printf("Resultado: %d", resultado);
return 0;
}
¿Qué puedo hacer? He visto que a veces recomiendan usar librerías externas, pero prefiero que me lo confirme alguien...
Saludos y muchas gracias.
Si me parace que la unica forma es utilizar una libreria extena como CLN.
Mira este enlace:
http://clan-destino42.blogspot.com.es/2011/01/numeros-grandes-en-c.html
Si te fijas en la documentacion te indica que usando esta función:
cl_RA expt (const cl_RA& x, const cl_I& y)
cl_R expt (const cl_R& x, const cl_I& y)
cl_N expt (const cl_N& x, const cl_I& y)
Returns x^y.
puedes intentar obtener lo que quieres.
Puedes verlo aquí: http://www.ginac.de/CLN/cln_4.html#SEC22
Muchas gracias.
Esa librería utiliza clase, según el link que me has pasado, por lo creo que es de C++... ¿O se puede usar bien en C?
Saludos.
Si me parece que es pa c++ ya que usa clases. Y los prerequisitos parece indicar eso:
http://www.ginac.de/CLN/cln_2.html#SEC3
Aunque he encontrado otra que si creo que trabaja en c y c++.
http://gmplib.org
Muchas gracias, creo que esa va a ser la librería que me va a servir.
En el PDF que viene ahí, pone cómo instalar la librería en UNIX... Pero, ¿cómo se instala en Windows 7 en CodeBlocks? Solo he instalado por ahora la librería Allegro, y no sé muy bien todavía cómo hacerlo...
Saludos.
Toma aquí viene , en ingles pero bueno... http://www.cs.nyu.edu/exact/core/gmp/
Muchas gracias, avesudra.