Program to find last digit of n'th Fibonnaci Number - GeeksforGeeks
Given a number 'n', write a function that prints the last digit of n'th ('n' can also be a large number) Fibonacci number.
Look at the final digit in each Fibonacci number – the units digit:
Simple approach is to calculate the n’th Fibonacci number and printing the last digit.
Read full article from Program to find last digit of n'th Fibonnaci Number - GeeksforGeeks
Given a number 'n', write a function that prints the last digit of n'th ('n' can also be a large number) Fibonacci number.
Look at the final digit in each Fibonacci number – the units digit:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, ...
Is there a pattern in the final digits?
0, 1, 1, 2, 3, 5, 8, 3, 1, 4, 5, 9, 4, 3, 7, 0, 7, ...
Yes!
It takes a while before it is noticeable. In fact, the series is just 60 numbers long and then it repeats the same sequence again and again all the way through the Fibonacci series – for ever. The series of final digits repeats with a cycle length of 60 (Refer this for explanations of this result).
It takes a while before it is noticeable. In fact, the series is just 60 numbers long and then it repeats the same sequence again and again all the way through the Fibonacci series – for ever. The series of final digits repeats with a cycle length of 60 (Refer this for explanations of this result).
void fib(int f[]) { /* 0th and 1st number of the series are 0 and 1*/ f[0] = 0; f[1] = 1; /* Add the previous 2 numbers in the series and store last digit of result */ for (int i = 2; i <= 59; i++) f[i] = (f[i-1] + f[i-2])%10; } // Returns last digit of n'th Fibonacci Number int findLastDigit(long n) { // In Java, values are 0 by default int f[] = new int[60]; // Precomputing units digit of first 60 // Fibonacci numbers fib(f); int index = (int)(n % 60L); return f[index]; }Simple approach is to calculate the n’th Fibonacci number and printing the last digit.
static long fib(long n) { long F[][] = new long[][] {{1,1},{1,0}}; if (n == 0) return 0; power(F, n-1); return F[0][0]; } // Utility function to multiply two matrices and // store result in first. static void multiply(long F[][], long M[][]) { long x = F[0][0]*M[0][0] + F[0][1]*M[1][0]; long y = F[0][0]*M[0][1] + F[0][1]*M[1][1]; long z = F[1][0]*M[0][0] + F[1][1]*M[1][0]; long w = F[1][0]*M[0][1] + F[1][1]*M[1][1]; F[0][0] = x; F[0][1] = y; F[1][0] = z; F[1][1] = w; } /* Optimized version of power() in method 4 */ static void power(long F[][], long n) { if( n == 0 || n == 1) return; long M[][] = new long[][] {{1,1},{1,0}}; power(F, n/2); multiply(F, F); if (n%2 != 0) multiply(F, M); } // Returns last digit of n'th Fibonacci Number long findLastDigit(long n) { return (fib(n) % 10); }