Problema con números largos

Iniciado por DickGumshoe, 4 Julio 2012, 19:10 PM

0 Miembros y 1 Visitante están viendo este tema.

DickGumshoe

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.

SXF

#1
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

DickGumshoe

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.

SXF

#3
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

DickGumshoe

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.

avesudra

#5
Toma aquí viene , en ingles pero bueno... http://www.cs.nyu.edu/exact/core/gmp/

Regístrate en

DickGumshoe