# How to check if a given number is Fibonacci number?

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, 141, ..

Examples :

```Input : 8
Output : Yes

Input : 34
Output : Yes

Input : 41
Output : No
```

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

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++

 `// C++ program to check if x is a perfect square ` `#include ` `#include ` `using` `namespace` `std; ` ` `  `// A utility function that returns true if x is perfect square ` `bool` `isPerfectSquare(``int` `x) ` `{ ` `    ``int` `s = ``sqrt``(x); ` `    ``return` `(s*s == x); ` `} ` ` `  `// Returns true if n is a Fibinacci Number, else false ` `bool` `isFibonacci(``int` `n) ` `{ ` `    ``// n is Fibinacci if one of 5*n*n + 4 or 5*n*n - 4 or both ` `    ``// is a perferct square ` `    ``return` `isPerfectSquare(5*n*n + 4) || ` `           ``isPerfectSquare(5*n*n - 4); ` `} ` ` `  `// A utility function to test above functions ` `int` `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

 `// 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

 `# python program to check if x is a perfect square ` `import` `math ` ` `  `# A utility function that returns true if x is perfect square ` `def` `isPerfectSquare(x): ` `    ``s ``=` `int``(math.sqrt(x)) ` `    ``return` `s``*``s ``=``=` `x ` ` `  `# Returns true if n is a Fibinacci Number, else false ` `def` `isFibonacci(n): ` ` `  `    ``# n is Fibinacci if one of 5*n*n + 4 or 5*n*n - 4 or both ` `    ``# is a perferct square ` `    ``return` `isPerfectSquare(``5``*``n``*``n ``+` `4``) ``or` `isPerfectSquare(``5``*``n``*``n ``-` `4``) ` `    `  `# A utility function to test above functions ` `for` `i ``in` `range``(``1``,``11``): ` `     ``if` `(isFibonacci(i) ``=``=` `True``): ` `         ``print` `i,``"is a Fibonacci Number"` `     ``else``: ` `         ``print` `i,``"is a not Fibonacci Number "`

## C#

 `// C# program to check if  ` `// x is a perfect square ` `using` `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

 ` `

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```