mirror of
https://github.com/TheAlgorithms/Java.git
synced 2026-03-13 08:40:43 +08:00
Add a new method to check Perfect Square (#5917)
This commit is contained in:
committed by
GitHub
parent
95875b0ae4
commit
921821214f
@@ -18,4 +18,16 @@ public final class PerfectSquare {
|
||||
final int sqrt = (int) Math.sqrt(number);
|
||||
return sqrt * sqrt == number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a number is perfect square or not
|
||||
*
|
||||
* @param number number to be checked
|
||||
* @return {@code true} if {@code number} is perfect square, otherwise
|
||||
* {@code false}
|
||||
*/
|
||||
public static boolean isPerfectSquareUsingPow(long number) {
|
||||
long a = (long) Math.pow(number, 1.0 / 2);
|
||||
return a * a == number;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,11 +9,13 @@ public class PerfectSquareTest {
|
||||
@ValueSource(ints = {0, 1, 2 * 2, 3 * 3, 4 * 4, 5 * 5, 6 * 6, 7 * 7, 8 * 8, 9 * 9, 10 * 10, 11 * 11, 123 * 123})
|
||||
void positiveTest(final int number) {
|
||||
Assertions.assertTrue(PerfectSquare.isPerfectSquare(number));
|
||||
Assertions.assertTrue(PerfectSquare.isPerfectSquareUsingPow(number));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@ValueSource(ints = {-1, -2, -3, -4, -5, -100, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 15, 17, 99, 101, 257, 999, 1001})
|
||||
void negativeTest(final int number) {
|
||||
Assertions.assertFalse(PerfectSquare.isPerfectSquare(number));
|
||||
Assertions.assertFalse(PerfectSquare.isPerfectSquareUsingPow(number));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user