mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-26 05:59:22 +08:00
36 lines
1.2 KiB
Java
36 lines
1.2 KiB
Java
package com.thealgorithms.maths;
|
|
|
|
/**
|
|
* Fibonacci: 0 1 1 2 3 5 8 13 21 ...
|
|
* This code checks Fibonacci Numbers up to 45th number.
|
|
* Other checks fail because of 'long'-type overflow.
|
|
*/
|
|
public class FibonacciNumberCheck {
|
|
/**
|
|
* Check if a number is perfect square number
|
|
*
|
|
* @param number the number to be checked
|
|
* @return <tt>true</tt> if {@code number} is a perfect square, otherwise
|
|
* <tt>false</tt>
|
|
*/
|
|
public static boolean isPerfectSquare(long number) {
|
|
long sqrt = (long) Math.sqrt(number);
|
|
return sqrt * sqrt == number;
|
|
}
|
|
|
|
/**
|
|
* Check if a number is a Fibonacci number. This is true if and only if at
|
|
* least one of 5x^2+4 or 5x^2-4 is a perfect square
|
|
*
|
|
* @param number the number
|
|
* @return <tt>true</tt> if {@code number} is a Fibonacci number, otherwise
|
|
* <tt>false</tt>
|
|
* @link https://en.wikipedia.org/wiki/Fibonacci_number#Identification
|
|
*/
|
|
public static boolean isFibonacciNumber(long number) {
|
|
long value1 = 5 * number * number + 4;
|
|
long value2 = 5 * number * number - 4;
|
|
return isPerfectSquare(value1) || isPerfectSquare(value2);
|
|
}
|
|
}
|