public class Fibonacci { public static void main(String args[]) { // Serie de fibonacci para los primeros 94 numeros, mas de 93 ya es erroneo el resultado int i, n = 94; long r = 1, a = 0, b = 1, t = 0; System.out.println("val 1 ==> " + 0); System.out.println("val 2 ==> " + 1); for (i = 3; i <= n; i++) { t = a + b; System.out.println("val " + i + " ==> " + t); a = b; b = t; r += t; } System.out.println("Suma de la serie " + r); // Serie de fibonacci para los primeros 100 numeros n = 100; // Serie de Fibonacci para cualquier n, solo hay que poner mas digitos en los arreglos int TAM = 25; // Arreglos de trabajo int []A = new int[TAM]; int []B = new int[TAM]; int []C = new int[TAM]; // Inicializacion de los valores de la serie A[0] = 0; B[0] = 1; System.out.println("\n\nSerie de fibonacci con aritmetica de precision arbitraria, para n = " + n); for (int k = 3; k <= n; k++) { // Pongo en cero el resultante for (i = 0; i < TAM; i++) C[i] = 0; // Sumo A + B y guardo el resultado en C for (i = 0; i < TAM; i++) { C[i] += A[i] + B[i]; if (C[i] >= 10) { C[i] -= 10; C[i + 1] += 1; } } // Visualizo /* System.out.println("A ="); for (i = TAM-1; i >= 0 ; i--) System.out.print(A[i]); System.out.println(""); System.out.println("B ="); for (i = TAM-1; i >= 0 ; i--) System.out.print(B[i]); System.out.println(""); */ System.out.print("val " + k + " ==> "); for (i = TAM - 1; i >= 0 ; i--) System.out.print(C[i]); System.out.println(""); // Intercambio valores para continuar con el siguiente termino de la serie for (i = 0; i < TAM; i++) { A[i] = B[i]; B[i] = C[i]; } } } }