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
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).
class GFG {
static boolean isPerfectSquare( int x)
{
int s = ( int )Math.sqrt(x);
return (s * s == x);
}
static boolean isFibonacci( int n)
{
return isPerfectSquare( 5 * n * n + 4 ) || isPerfectSquare( 5 * n * n - 4 );
}
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" );
}
}
|
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
Please refer complete article on How to check if a given number is Fibonacci number? for more details!