diff --git a/src/main/java/com/thealgorithms/maths/PerfectSquare.java b/src/main/java/com/thealgorithms/maths/PerfectSquare.java index fbc7a6f19..e9318bd7d 100644 --- a/src/main/java/com/thealgorithms/maths/PerfectSquare.java +++ b/src/main/java/com/thealgorithms/maths/PerfectSquare.java @@ -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; + } } diff --git a/src/test/java/com/thealgorithms/maths/PerfectSquareTest.java b/src/test/java/com/thealgorithms/maths/PerfectSquareTest.java index 08c96bc71..2bda5bfd6 100644 --- a/src/test/java/com/thealgorithms/maths/PerfectSquareTest.java +++ b/src/test/java/com/thealgorithms/maths/PerfectSquareTest.java @@ -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)); } }