VOOZH about

URL: https://www.geeksforgeeks.org/dsa/fibonacci-number-modulo-m-and-pisano-period/

⇱ Fibonacci Number modulo M and Pisano Period - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Fibonacci Number modulo M and Pisano Period

Last Updated : 12 Jul, 2025

Given two number N and M. The task is to find the N-th fibonacci number mod M.
In general let FN be the N-th fibonacci number then the output should be FN % M.

The Fibonacci sequence is a series of numbers in which each no. is the sum of two preceding nos. It is defined by the recurrence relation: 

F0 = 0
F1 = 1
Fn = Fn-1 + Fn-2

These nos. are in the following sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
Here N can be large.

Examples: 

Input: N = 438, M = 900 
Output: 44

Input: N = 1548276540, M = 235 
Output: 185  

Approach: 
However, for such values of N, a simple recursive approach to keep calculating N Fibonacci numbers with a time complexity of O(2N) should be avoided. Even an iterative or a Dynamic Programming approach with an algorithm looping for N iterations will not be time-efficient.
This problem can be solved using the properties of Pisano Period
For a given value of N and M >= 2, the series generated with Fi modulo M (for i in range(N)) is periodic. 

The period always starts with 01. The Pisano Period is defined as the length of the period of this series.
To understand it further, let's see what happens when M is small:

i01234567891011
Fi01123581321345589
Fi mod 2011011011011
Fi mod 3011202210112


For M = 2, the period is 011 and has length 3 while for M = 3 the sequence repeats after 8 nos.

Example: 
So to compute, say F2019 mod 5, we'll find the remainder of 2019 when divided by 20 (Pisano Period of 5 is 20). 2019 mod 20 is 19. Therefore, F2019 mod 5 = F19 mod 5 = 1. This property is true in general. 
We need to find the remainder when N is divided by the Pisano Period of M. Then calculate F(N)remainder mod M for the newly calculated N.

Below is the implementation of FN modulo M:


Output: 
185

 

Pisano Period of 235 is 160. 1548276540 mod 160 is 60. F60 mod 235 = 185. Using Pisano Period, we now need to calculate Fibonacci nos. iteratively for a relatively lower N than specified in the original problem and then calculate FN modulo M.
Time Complexity: O(M2)

Auxiliary Space: O(1)
 

Comment
Article Tags:
Article Tags: