Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jgonzalezo en 20 Septiembre 2014, 22:00 pm



Título: FIBONACCI DE N MUY GRANDE
Publicado por: jgonzalezo en 20 Septiembre 2014, 22:00 pm
Hola a todos, bueno primero que nada tengo q programar en C un fibonacci que me aguante hasta por lo menos el de 5000 tengo una idea de como poder resolverlo pero no me sale nada a la hora de programarlo, mi idea seria ir guardándolo el resultado cada uno de los dígitos de este en un arreglo de enteros, pero la verdad no se me ocurre como hacerlo, ojala me puedan ayudar, y gracias de ante mano

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
   int a,*puntero,i;
   printf("\n\nIngrese el numero para calcular Fibonacci.\n\n");
   scanf("%d",&a);
   
   puntero=malloc(sizeof(int));
   puntero[0]= 0;
   puntero[1]= 1;

    for(i=1;i<=a-1;i++) {
      puntero[2] = puntero[0]+ puntero[1];
      puntero[0] = puntero[1];
      puntero[1] = puntero[2];
   }
    printf("\n\n El Fibonacci de %d es: %d \n\n ",a, puntero[2]);
   
   free(puntero);
  system("PAUSE");     
  return 0;
}


ese es el codigo que llevo, se q no hace lo q pido, pero ojala me puedan dar una nocion o algo, soy nuevo en esto asi q agradeceria si son criticas q sean criticas constructivas.


Título: Re: FIBONACCI DE N MUY GRANDE
Publicado por: Caster en 20 Septiembre 2014, 22:44 pm
Por favor, utiliza las etiquetas GeSHi para que tu código sea más legible. Aquí (http://es.wikipedia.org/wiki/Sucesi%C3%B3n_de_Fibonacci#Algoritmos_de_c.C3.A1lculo) mismo tienes explicados algunos algoritmos con los que puedes reducir notablemente el numero de operaciones para hallar los elementos de la sucesión.

Un saludo.


Título: Re: FIBONACCI DE N MUY GRANDE
Publicado por: T. Collins en 20 Septiembre 2014, 22:51 pm
Cuando dices Fibonacci de 5000, que quiere decir que una serie de 5000 números o hasta el número 5000?


Título: Re: FIBONACCI DE N MUY GRANDE
Publicado por: jgonzalezo en 20 Septiembre 2014, 23:00 pm
Hola, emm tengo claro como funciona lo funcion fibonacci y su algoritmo, deseo calcular fibonacci(5000) "fibonacci de 5000" se que el problema del algoritmo basico es que no hay tipo de dato que me aguante dicho resultado, es por eso que habia pensado en representar los resultados que vayan surgiendo en un arreglo de enteros donde cada digito del numero fuese una posicion de dicho arreglo, y simplemente ir guardando los dos anteriores ya que fibonacci necesita los dos anteriores para representar el del siguiente numero, espero haber sido un poco mas claro.


Título: Re: FIBONACCI DE N MUY GRANDE
Publicado por: jgonzalezo en 20 Septiembre 2014, 23:01 pm
Por favor, utiliza las etiquetas GeSHi para que tu código sea más legible. Aquí (http://es.wikipedia.org/wiki/Sucesi%C3%B3n_de_Fibonacci#Algoritmos_de_c.C3.A1lculo) mismo tienes explicados algunos algoritmos con los que puedes reducir notablemente el numero de operaciones para hallar los elementos de la sucesión.

Un saludo.

Código:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a,*puntero,i;
printf("\n\nIngrese el numero para calcular Fibonacci.\n\n");
scanf("%d",&a);

puntero=malloc(sizeof(int));
puntero[0]= 0;
puntero[1]= 1;

    for(i=1;i<=a-1;i++) {
puntero[2] = puntero[0]+ puntero[1];
puntero[0] = puntero[1];
puntero[1] = puntero[2];
   }
    printf("\n\n El Fibonacci de %d es: %d \n\n ",a, puntero[2]);

free(puntero);
  system("PAUSE");     
  return 0;
}


perdon soy nuevo en este foro


Título: Re: FIBONACCI DE N MUY GRANDE
Publicado por: jgonzalezo en 20 Septiembre 2014, 23:02 pm
Cuando dices Fibonacci de 5000, que quiere decir que una serie de 5000 números o hasta el número 5000?

fibonacci de 5000 pero es un numero que no puede ser guardado en ninguna variable de ningun tipo


Título: Re: FIBONACCI DE N MUY GRANDE
Publicado por: T. Collins en 20 Septiembre 2014, 23:24 pm
Mírate esto: http://www.cquestions.com/2010/08/multiplication-of-large-numbers-in-c.html
Tendrás que hacer una función que sume dos números cuyas cifras se guardan en un array de chars.


Título: Re: FIBONACCI DE N MUY GRANDE
Publicado por: engel lex en 21 Septiembre 2014, 02:15 am
puedes usar GMP par calculos de alta precision

aquí escribí un post al respecto
 (http://foro.elhacker.net/programacion_cc/duda_matematica_de_precision_arbitraria-t412080.0.html;msg1933292)

y aqui una aplicación (http://foro.elhacker.net/programacion_cc/calculo_de_pi_en_alta_precision_aporte-t412338.0.html), calculé cuando lo hice pi a creo que 10 millones de decimales en unos minutos :P