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
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 <iostream> #include <math.h> 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; } |
chevron_right
filter_none
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 |
chevron_right
filter_none
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 " |
chevron_right
filter_none
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 |
chevron_right
filter_none
PHP
<?php // PHP program to check if // x is a perfect square // A utility function that // returns true if x is // perfect square function isPerfectSquare( $x ) { $s = (int)(sqrt( $x )); return ( $s * $s == $x ); } // Returns true if n is a // Fibinacci Number, else false function 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) || isPerfectSquare(5 * $n * $n - 4); } // Driver Code for ( $i = 1; $i <= 10; $i ++) if (isFibonacci( $i )) echo "$i is a Fibonacci Number \n" ; else echo "$i is a not Fibonacci Number \n" ; // This code is contributed by mits ?> |
chevron_right
filter_none
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
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
Recommended Posts:
- Check if a M-th fibonacci number divides N-th fibonacci number
- An efficient way to check whether n-th Fibonacci number is multiple of 10
- Number of ways to represent a number as sum of k fibonacci numbers
- Finding number of digits in n'th Fibonacci number
- Nth Even Fibonacci Number
- Nth XOR Fibonacci number
- Find the next fibonacci number
- Fibonacci number in an array
- n'th multiple of a number in Fibonacci Series
- Program to find Nth odd Fibonacci Number
- Nth Fibonacci number using Pell's equation
- Python Program for n-th Fibonacci number
- Count the nodes whose sum with X is a Fibonacci number
- Find the previous fibonacci number
- Minimum number of Fibonacci jumps to reach end
Improved By : Mithun Kumar