[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/null-exception/Java/master/Maths/FibonacciNumber.java [Back]  [Original]

package Maths;

/**
 * Fibonacci: 0 1 1 2 3 5 8 13 21 ...
 */
public class FibonacciNumber {
    public static void main(String[] args) {
        assert isFibonacciNumber(1);
        assert isFibonacciNumber(2);
        assert isFibonacciNumber(21);
        assert !isFibonacciNumber(9);
        assert !isFibonacciNumber(10);
    }

    /**
     * Check if a number is perfect square number
     *
     * @param number the number to be checked
     * @return true if {@code number} is perfect square, otherwise false
     */
    public static boolean isPerfectSquare(int number) {
        int sqrt = (int) Math.sqrt(number);
        return sqrt * sqrt == number;
    }

    /**
     * Check if a number is 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 true if {@code number} is fibonacci number, otherwise false
     * @link https://en.wikipedia.org/wiki/Fibonacci_number#Identification
     */
    public static boolean isFibonacciNumber(int number) {
        return isPerfectSquare(5 * number * number + 4) || isPerfectSquare(5 * number * number - 4);
    }
}

Web Proxy Viewer  |  New URL  |  Original Page