How to check if a given number is Fibonacci number? - GeeksforGeeks

20 Jan, 2022
Given a number ‘n’, how to check if n is a Fibonacci number. First few Fibonacci numbers are 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, .. Examples :  
Input : 8
Output : Yes

Input : 34
Output : Yes

Input : 41
Output : No
 
A simple way is to generate Fibonacci numbers until the generated number is greater than or equal to ‘n’. Following is an interesting property about Fibonacci numbers that can also be used to check if a given number is Fibonacci or not. A number is Fibonacci if and only if one or both of (5*n2 + 4) or (5*n2 – 4) is a perfect square (Source: Wiki). Following is a simple program based on this concept.  
C++
Java
Python
C#
PHP
Javascript
// C++ program to check if x is a perfect square#include <iostream>#include <math.h>using namespace std; // A utility function that returns true if x is perfect squarebool isPerfectSquare(int x){    int s = sqrt(x);    return (s*s == x);} // Returns true if n is a Fibonacci Number, else falsebool isFibonacci(int n){    // n is Fibonacci if one of 5*n*n + 4 or 5*n*n - 4 or both    // is a perfect square    return isPerfectSquare(5*n*n + 4) ||           isPerfectSquare(5*n*n - 4);} // A utility function to test above functionsint main(){  for (int i = 1; i <= 10; i++)     isFibonacci(i)? cout << i << " is a Fibonacci Number \n":                     cout << i << " is a not Fibonacci Number \n" ;  return 0;}
// Java program to check if x is a perfect square class GFG{    // A utility method that returns true if x is perfect square    static  boolean isPerfectSquare(int x)    {        int s = (int) Math.sqrt(x);        return (s*s == x);    }          // Returns true if n is a Fibonacci Number, else false    static boolean isFibonacci(int n)    {        // n is Fibonacci if one of 5*n*n + 4 or 5*n*n - 4 or both        // is a perfect square        return isPerfectSquare(5*n*n + 4) ||               isPerfectSquare(5*n*n - 4);    }     // Driver method    public static void main(String[] args)    {        for (int i = 1; i <= 10; i++)             System.out.println(isFibonacci(i) ?  i +  " is a Fibonacci Number" :                                                  i + " is a not Fibonacci Number");    }}//This code is contributed by Nikita Tiwari
# python program to check if x is a perfect squareimport math # A utility function that returns true if x is perfect squaredef isPerfectSquare(x):    s = int(math.sqrt(x))    return s*s == x # Returns true if n is a Fibonacci Number, else falsedef isFibonacci(n):     # n is Fibonacci if one of 5*n*n + 4 or 5*n*n - 4 or both    # is a perfect square    return isPerfectSquare(5*n*n + 4) or isPerfectSquare(5*n*n - 4)    # A utility function to test above functionsfor i in range(1,11):     if (isFibonacci(i) == True):         print i,"is a Fibonacci Number"     else:         print i,"is a not Fibonacci Number "
// C# program to check if// x is a perfect squareusing System; class GFG {     // A utility function that returns    // true if x is perfect square    static bool isPerfectSquare(int x)    {        int s = (int)Math.Sqrt(x);        return (s * s == x);    }     // Returns true if n is a    // Fibonacci Number, else false    static bool isFibonacci(int n)    {        // n is Fibonacci if one of        // 5*n*n + 4 or 5*n*n - 4 or        // both are a perfect square        return isPerfectSquare(5 * n * n + 4) ||               isPerfectSquare(5 * n * n - 4);    }     // Driver method    public static void Main()    {        for (int i = 1; i <= 10; i++)            Console.WriteLine(isFibonacci(i) ? i +                              " is a Fibonacci Number" : i +                              " is a not Fibonacci Number");    }} // This code is contributed by Sam007
<?php// PHP program to check if// x is a perfect square // A utility function that// returns true if x is// perfect squarefunction isPerfectSquare($x){    $s = (int)(sqrt($x));    return ($s * $s == $x);} // Returns true if n is a// Fibonacci Number, else falsefunction isFibonacci($n){    // n is Fibonacci if one of    // 5*n*n + 4 or 5*n*n - 4 or    // both is a perfect square    return isPerfectSquare(5 * $n * $n + 4) ||           isPerfectSquare(5 * $n * $n - 4);} // Driver Codefor ($i = 1; $i <= 10; $i++)if(isFibonacci($i))echo "$i is a Fibonacci Number \n";elseecho "$i is a not Fibonacci Number \n" ; // This code is contributed by mits?>
<script>// javascript program to check if x is a perfect square // A utility function that returns true if x is perfect squarefunction isPerfectSquare( x){    let s = parseInt(Math.sqrt(x));    return (s * s == x);} // Returns true if n is a Fibonacci Number, else falsefunction isFibonacci( n){     // n is Fibonacci if one of 5*n*n + 4 or 5*n*n - 4 or both    // is a perfect square    return isPerfectSquare(5 * n * n + 4) ||           isPerfectSquare(5 * n * n - 4);} // A utility function to test above functions  for (let i = 1; i <= 10; i++)     isFibonacci(i)?  document.write( i + " is a Fibonacci Number <br/>"):                     document.write(i + " is a not Fibonacci Number <br/>") ;                      // This code is contributed by Rajput-Ji </script>
Output: 
1 is a Fibonacci Number
2 is a Fibonacci Number
3 is a Fibonacci Number
4 is a not Fibonacci Number
5 is a Fibonacci Number
6 is a not Fibonacci Number
7 is a not Fibonacci Number
8 is a Fibonacci Number
9 is a not Fibonacci Number
10 is a not Fibonacci Number
Time Complexity: O(n)
Auxiliary Space: O(1)
YouTube<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=tiiWQJGAr2o" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>
This article is contributed by Abhay Rathi. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above 
Mithun Kumar
Rajput-Ji
pranshu820
subhammahato348
sumitgumber28
arorakashish0911
simmytarika5
Fibonacci
MAQ Software
Mathematical
MAQ Software
Mathematical
Fibonacci
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Merge two sorted arrays
Modulo Operator (%) in C/C++ with Examples
Find all factors of a natural number | Set 1
Program to find sum of elements in a given array
The Knight's tour problem | Backtracking-1
Program for factorial of a number
Operators in C / C++
Minimum number of jumps to reach end
Modulo 10^9+7 (1000000007)
Efficient program to print all prime factors of a given number