Skip to content

Commit 957f633

Browse files
Added function and fixed bug in PerfectCube.java (TheAlgorithms#3655)
* Added another function to PerfectCube.java Added another function to PerfectCube.java and fixed a testing mistake in line number 9 * Created PerfectCubeTest.java Created PerfectCubeTest.java * fixed PerfectCubeTest.java * 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. * removed main() in PerfectCube.java
1 parent 5ab1b6c commit 957f633

File tree

2 files changed

+46
-9
lines changed

2 files changed

+46
-9
lines changed

src/main/java/com/thealgorithms/maths/PerfectCube.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,6 @@
55
*/
66
public class PerfectCube {
77

8-
public static void main(String[] args) {
9-
assert !isPerfectCube(-1);
10-
assert isPerfectCube(0);
11-
assert isPerfectCube(1);
12-
assert !isPerfectCube(4);
13-
assert isPerfectCube(8);
14-
assert isPerfectCube(27);
15-
}
16-
178
/**
189
* Check if a number is perfect cube or not
1910
*
@@ -22,7 +13,20 @@ public static void main(String[] args) {
2213
* {@code false}
2314
*/
2415
public static boolean isPerfectCube(int number) {
16+
number = Math.abs(number); // converting negative number to positive number
2517
int a = (int) Math.pow(number, 1.0 / 3);
2618
return a * a * a == number;
2719
}
20+
21+
/**
22+
* Check if a number is perfect cube or not by using Math.cbrt function
23+
*
24+
* @param number number to check
25+
* @return {@code true} if {@code number} is perfect cube, otherwise
26+
* {@code false}
27+
*/
28+
public static boolean isPerfectCubeMathCbrt(int number) {
29+
double cubeRoot = Math.cbrt(number);
30+
return cubeRoot == (int) cubeRoot;
31+
}
2832
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.thealgorithms.maths;
2+
3+
import org.junit.jupiter.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
6+
class PerfectCubeTest {
7+
8+
@Test
9+
public void perfectCube() {
10+
11+
Assertions.assertTrue(PerfectCube.isPerfectCube(-27));
12+
Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(-27));
13+
Assertions.assertTrue(PerfectCube.isPerfectCube(-1));
14+
Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(-1));
15+
Assertions.assertTrue(PerfectCube.isPerfectCube(0));
16+
Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(0));
17+
Assertions.assertTrue(PerfectCube.isPerfectCube(1));
18+
Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(1));
19+
Assertions.assertTrue(PerfectCube.isPerfectCube(8));
20+
Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(8));
21+
Assertions.assertTrue(PerfectCube.isPerfectCube(27));
22+
Assertions.assertTrue(PerfectCube.isPerfectCubeMathCbrt(27));
23+
24+
Assertions.assertFalse(PerfectCube.isPerfectCube(-9));
25+
Assertions.assertFalse(PerfectCube.isPerfectCubeMathCbrt(-9));
26+
Assertions.assertFalse(PerfectCube.isPerfectCube(2));
27+
Assertions.assertFalse(PerfectCube.isPerfectCubeMathCbrt(2));
28+
Assertions.assertFalse(PerfectCube.isPerfectCube(4));
29+
Assertions.assertFalse(PerfectCube.isPerfectCubeMathCbrt(4));
30+
Assertions.assertFalse(PerfectCube.isPerfectCube(30));
31+
Assertions.assertFalse(PerfectCube.isPerfectCubeMathCbrt(30));
32+
}
33+
}

0 commit comments

Comments
 (0)