
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
C++ Program to Find Fibonacci Numbers using Matrix Exponentiation
The Fibonacci numbers, commonly denoted Fn form a sequence, called the Fibonacci sequence, i.e; each number is the sum of the two preceding ones, starting from 0 and 1. That is −
F0 = 0 and F1 = 1 And Fn = Fn-1 + Fn-2 for n > 1.
Algorithm
Begin Take two 2 dimensional array Create a function and Perform matrix multiplication Create another function to find out power of matrix Create a function then to find out the Fibonacci number Multiply(arr1[2][2], arr2[2][2]) Take 4 variables a, b, c, d a = arr1[0][0] * arr2[0][0] + arr1[0][1] * arr2[1][0] b= arr1[0][0] * arr2[0][1] + arr1[0][1] * arr2[1][1] c = arr1[1][0] * arr2[0][0] + arr1[1][1] * arr2[1][0] d = arr1[1][0] * arr2[0][1] + arr1[1][1] * arr2[1][1] arr1[0][0] = a arr1[0][1] = b arr1[1][0] = c arr1[1][1] = d Power(arr1[2][2], take integer n as input) if (n == 0 or n == 1) return; arr1 [2][2] = {{1,1}, {1,0}} power(arr1, n / 2) multiply(arr1, arr1) if (n mod 2 not equal to 0) multiply(arr1, arr2) fibonacci_matrix(n) arr1[2][2] = {{1,1}, {1,0}} if n ==0 return 0 power(arr1 n - 1) return arr1[0][0] End
Example Code
#include <iostream> using namespace std; void multiply(int F[2][2], int M[2][2]) { int a = F[0][0] * M[0][0] + F[0][1] * M[1][0]; int b= F[0][0] * M[0][1] + F[0][1] * M[1][1]; int c = F[1][0] * M[0][0] + F[1][1] * M[1][0]; int d = F[1][0] * M[0][1] + F[1][1] * M[1][1]; F[0][0] = a; F[0][1] = b; F[1][0] = c; F[1][1] = d; } void power(int F[2][2], int n) { if (n == 0 || n == 1) return; int M[2][2] = {{1,1},{1,0}}; power(F, n / 2); multiply(F, F); if (n % 2 != 0) multiply(F, M); } int fibonacci_matrix(int n) { int F[2][2] = {{1,1},{1,0}}; if (n == 0) return 0; power(F, n - 1); return F[0][0]; } int main() { int n; while (1) { cout<<"Enter the integer n to find nth fibonacci no. (enter 0 to exit):"; cin>>n; if (n == 0) break; cout<<fibonacci_matrix(n)<<endl; } return 0; }
Output
Enter the integer n to find nth fibonacci no. (enter 0 to exit): 2 1 Enter the integer n to find nth fibonacci no. (enter 0 to exit): 6 8 Enter the integer n to find nth fibonacci no. (enter 0 to exit): 7 13 Enter the integer n to find nth fibonacci no. (enter 0 to exit): 0
- Related Articles
- C++ Program to Find Fibonacci Numbers using Recursion
- C++ Program to Find Fibonacci Numbers using Iteration
- C++ Program to Find Fibonacci Numbers using Dynamic Programming
- Find Nth term (A matrix exponentiation example) in C++
- Program for Fibonacci numbers in C
- C++ Program to Implement Modular Exponentiation Algorithm
- How to print the first ten Fibonacci numbers using C#?
- C++ program to find Nth Non Fibonacci Number
- Python Program to Find the Fibonacci Series Using Recursion
- Python Program for Fibonacci numbers
- C++ Program to Search Sorted Sequence Using Divide and Conquer with the Aid of Fibonacci Numbers
- Python Program to Find the Fibonacci Series without Using Recursion
- Program to find Nth Even Fibonacci Number in C++
- Large Fibonacci Numbers in C#
- Alternate Fibonacci Numbers in C++

Advertisements