From 2a7cf3dc50a36d7b2de62cb26dde487bb98290ba Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Kalsi Date: Tue, 25 Oct 2022 16:25:06 +0530 Subject: [PATCH 1/5] Added another function to PerfectCube.java Added another function to PerfectCube.java and fixed a testing mistake in line number 9 --- .../com/thealgorithms/maths/PerfectCube.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/PerfectCube.java b/src/main/java/com/thealgorithms/maths/PerfectCube.java index 820b17201882..b35188fcb7f0 100644 --- a/src/main/java/com/thealgorithms/maths/PerfectCube.java +++ b/src/main/java/com/thealgorithms/maths/PerfectCube.java @@ -6,12 +6,19 @@ public class PerfectCube { public static void main(String[] args) { - assert !isPerfectCube(-1); + assert isPerfectCube(-1); assert isPerfectCube(0); assert isPerfectCube(1); assert !isPerfectCube(4); assert isPerfectCube(8); assert isPerfectCube(27); + + assert isPerfectCubeMathCbrt(-1); + assert isPerfectCubeMathCbrt(0); + assert isPerfectCubeMathCbrt(1); + assert !isPerfectCubeMathCbrt(4); + assert isPerfectCubeMathCbrt(8); + assert isPerfectCubeMathCbrt(27); } /** @@ -25,4 +32,16 @@ public static boolean isPerfectCube(int number) { int a = (int) Math.pow(number, 1.0 / 3); return a * a * a == number; } + + /** + * Check if a number is perfect cube or not by using Math.cbrt function + * + * @param number number to check + * @return {@code true} if {@code number} is perfect cube, otherwise + * {@code false} + */ + public static boolean isPerfectCubeMathCbrt(int number) { + double cubeRoot = Math.cbrt(number); + return cubeRoot == (int) cubeRoot; + } } From 938c89c5d64118033b935d347358a29ded60aa0f Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Kalsi Date: Tue, 25 Oct 2022 18:56:57 +0530 Subject: [PATCH 2/5] Created PerfectCubeTest.java Created PerfectCubeTest.java --- .../thealgorithms/maths/PerfectCubeTest.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/test/java/com/thealgorithms/maths/PerfectCubeTest.java diff --git a/src/test/java/com/thealgorithms/maths/PerfectCubeTest.java b/src/test/java/com/thealgorithms/maths/PerfectCubeTest.java new file mode 100644 index 000000000000..00fa3d9f65d9 --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/PerfectCubeTest.java @@ -0,0 +1,21 @@ +package com.thealgorithms.maths; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class PerfectCubeTest { + + @Test + public void perfectCube() { + int trueTestCases[] = { -27, -1, 0, 1, 8, 27 }; + int falseTestCases[] = { -9, 2, 4, 30 }; + for (Integer n : trueTestCases) { + Assertions.assertTrue(PerfectCube.isPerfectCube(n)); + Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(n)); + } + for (Integer n : falseTestCases) { + Assertions.assertFalse(PerfectCube.isPerfectCube(n)); + Assertions.assertFalse(PerfectCube.isPerfectCubeMathCbrt(n)); + } + } +} From db7575ba83142295399091ad6e6ddaddfcb9aff2 Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Kalsi Date: Tue, 25 Oct 2022 19:07:12 +0530 Subject: [PATCH 3/5] fixed PerfectCubeTest.java --- .../thealgorithms/maths/PerfectCubeTest.java | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/PerfectCubeTest.java b/src/test/java/com/thealgorithms/maths/PerfectCubeTest.java index 00fa3d9f65d9..806f5493918c 100644 --- a/src/test/java/com/thealgorithms/maths/PerfectCubeTest.java +++ b/src/test/java/com/thealgorithms/maths/PerfectCubeTest.java @@ -7,15 +7,27 @@ class PerfectCubeTest { @Test public void perfectCube() { - int trueTestCases[] = { -27, -1, 0, 1, 8, 27 }; - int falseTestCases[] = { -9, 2, 4, 30 }; - for (Integer n : trueTestCases) { - Assertions.assertTrue(PerfectCube.isPerfectCube(n)); - Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(n)); - } - for (Integer n : falseTestCases) { - Assertions.assertFalse(PerfectCube.isPerfectCube(n)); - Assertions.assertFalse(PerfectCube.isPerfectCubeMathCbrt(n)); - } + + Assertions.assertTrue(PerfectCube.isPerfectCube(-27)); + Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(-27)); + Assertions.assertTrue(PerfectCube.isPerfectCube(-1)); + Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(-1)); + Assertions.assertTrue(PerfectCube.isPerfectCube(0)); + Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(0)); + Assertions.assertTrue(PerfectCube.isPerfectCube(1)); + Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(1)); + Assertions.assertTrue(PerfectCube.isPerfectCube(8)); + Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(8)); + Assertions.assertTrue(PerfectCube.isPerfectCube(27)); + Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(27)); + + Assertions.assertFalse(PerfectCube.isPerfectCube(-9)); + Assertions.assertFalse(PerfectCube.isPerfectCubeMathCbrt(-9)); + Assertions.assertFalse(PerfectCube.isPerfectCube(2)); + Assertions.assertFalse(PerfectCube.isPerfectCubeMathCbrt(2)); + Assertions.assertFalse(PerfectCube.isPerfectCube(4)); + Assertions.assertFalse(PerfectCube.isPerfectCubeMathCbrt(4)); + Assertions.assertFalse(PerfectCube.isPerfectCube(30)); + Assertions.assertFalse(PerfectCube.isPerfectCubeMathCbrt(30)); } } From d7d63b53f387ec8735fbf94474262f2eb9ac022a Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Kalsi Date: Tue, 25 Oct 2022 19:27:27 +0530 Subject: [PATCH 4/5] Fixed bug in PerfectCube.java Fixed bug in PerfectCube.java in isPerfectCube() function for negative numbers. Now It gives the correct output for perfect negative numbers. --- src/main/java/com/thealgorithms/maths/PerfectCube.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/thealgorithms/maths/PerfectCube.java b/src/main/java/com/thealgorithms/maths/PerfectCube.java index b35188fcb7f0..d82082e4d361 100644 --- a/src/main/java/com/thealgorithms/maths/PerfectCube.java +++ b/src/main/java/com/thealgorithms/maths/PerfectCube.java @@ -29,6 +29,7 @@ public static void main(String[] args) { * {@code false} */ public static boolean isPerfectCube(int number) { + number = Math.abs(number); // converting negative number to positive number int a = (int) Math.pow(number, 1.0 / 3); return a * a * a == number; } From f52722a8a3b7f6338e72e08ff32ce9694713a39b Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Kalsi Date: Fri, 28 Oct 2022 00:45:07 +0530 Subject: [PATCH 5/5] removed main() in PerfectCube.java --- .../com/thealgorithms/maths/PerfectCube.java | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/PerfectCube.java b/src/main/java/com/thealgorithms/maths/PerfectCube.java index d82082e4d361..0fae7889ce94 100644 --- a/src/main/java/com/thealgorithms/maths/PerfectCube.java +++ b/src/main/java/com/thealgorithms/maths/PerfectCube.java @@ -5,22 +5,6 @@ */ public class PerfectCube { - public static void main(String[] args) { - assert isPerfectCube(-1); - assert isPerfectCube(0); - assert isPerfectCube(1); - assert !isPerfectCube(4); - assert isPerfectCube(8); - assert isPerfectCube(27); - - assert isPerfectCubeMathCbrt(-1); - assert isPerfectCubeMathCbrt(0); - assert isPerfectCubeMathCbrt(1); - assert !isPerfectCubeMathCbrt(4); - assert isPerfectCubeMathCbrt(8); - assert isPerfectCubeMathCbrt(27); - } - /** * Check if a number is perfect cube or not *