Skip to content

Commit 8d6b85e

Browse files
added another method to check pronic number
1 parent b190cb7 commit 8d6b85e

File tree

2 files changed

+24
-24
lines changed

2 files changed

+24
-24
lines changed

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,15 @@ static boolean isPronic(int inputNumber) {
3434
// equals input_number
3535
return false;
3636
}
37+
38+
/**
39+
* This method checks if the given number is pronic number or non-pronic number using square root of number for finding divisors
40+
*
41+
* @param number Integer value which is to be checked if is a pronic number or not
42+
* @return true if input number is a pronic number, false otherwise
43+
*/
44+
public static boolean isPronicNumber(int number) {
45+
int squareRoot = (int) Math.sqrt(number); // finding just smaller divisor of the number than its square root.
46+
return squareRoot * (squareRoot + 1) == number;
47+
}
3748
}
Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,22 @@
11
package com.thealgorithms.maths;
22

3-
import static org.junit.jupiter.api.Assertions.assertFalse;
4-
import static org.junit.jupiter.api.Assertions.assertTrue;
5-
6-
import org.junit.jupiter.api.Test;
3+
import org.junit.jupiter.api.Assertions;
4+
import org.junit.jupiter.params.ParameterizedTest;
5+
import org.junit.jupiter.params.provider.ValueSource;
76

87
public class PronicNumberTest {
98

10-
@Test
11-
void testForPronicNumber() {
12-
// given
13-
int number = 30;
14-
15-
// when
16-
boolean result = PronicNumber.isPronic(number);
17-
18-
// then
19-
assertTrue(result);
9+
@ParameterizedTest
10+
@ValueSource(ints = {0, 2, 6, 12, 20, 30, 42, 110, 272, 380, 420, 1260, 2550})
11+
void testForPronicNumber(final int number) {
12+
Assertions.assertTrue(PronicNumber.isPronic(number));
13+
Assertions.assertTrue(PronicNumber.isPronicNumber(number));
2014
}
2115

22-
@Test
23-
void testForNonPronicNumber() {
24-
// given
25-
int number = 21;
26-
27-
// when
28-
boolean result = PronicNumber.isPronic(number);
29-
30-
// then
31-
assertFalse(result);
16+
@ParameterizedTest
17+
@ValueSource(ints = {1, 4, 21, 36, 150, 2500})
18+
void testForNonPronicNumber(final int number) {
19+
Assertions.assertFalse(PronicNumber.isPronic(number));
20+
Assertions.assertFalse(PronicNumber.isPronicNumber(number));
3221
}
3322
}

0 commit comments

Comments
 (0)