Add unit tests for FibonacciNumberCheck (#4225)

This commit is contained in:
Albina Gimaletdinova
2023-07-01 20:52:52 +03:00
committed by GitHub
parent bc699b86e5
commit 8862a4dea5
3 changed files with 40 additions and 16 deletions

View File

@ -2,17 +2,10 @@ 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 FibonacciNumber {
public static void main(String[] args) {
assert isFibonacciNumber(1);
assert isFibonacciNumber(2);
assert isFibonacciNumber(21);
assert !isFibonacciNumber(9);
assert !isFibonacciNumber(10);
}
public class FibonacciNumberCheck {
/**
* Check if a number is perfect square number
*
@ -20,8 +13,8 @@ public class FibonacciNumber {
* @return <tt>true</tt> if {@code number} is a perfect square, otherwise
* <tt>false</tt>
*/
public static boolean isPerfectSquare(int number) {
int sqrt = (int) Math.sqrt(number);
public static boolean isPerfectSquare(long number) {
long sqrt = (long) Math.sqrt(number);
return sqrt * sqrt == number;
}
@ -34,9 +27,9 @@ public class FibonacciNumber {
* <tt>false</tt>
* @link https://en.wikipedia.org/wiki/Fibonacci_number#Identification
*/
public static boolean isFibonacciNumber(int number) {
int value1 = 5 * number * number + 4;
int value2 = 5 * number * number - 4;
public static boolean isFibonacciNumber(long number) {
long value1 = 5 * number * number + 4;
long value2 = 5 * number * number - 4;
return isPerfectSquare(value1) || isPerfectSquare(value2);
}
}