Skip to content

Commit 283ad78

Browse files
add prime factors
1 parent 51d37ec commit 283ad78

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.examplehub.maths;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class PrimeFactors {
7+
8+
/**
9+
* Get all prime factors of a number.
10+
*
11+
* @param number the number to be calculated.
12+
* @return all prime factors.
13+
*/
14+
public static int[] primeFactors(int number) {
15+
List<Integer> integers = new ArrayList<>();
16+
while (number % 2 == 0) {
17+
integers.add(2);
18+
number >>= 1;
19+
}
20+
21+
for (int i = 3; i <= Math.sqrt(number); i += 2) {
22+
while (number % i == 0) {
23+
integers.add(i);
24+
number /= i;
25+
}
26+
}
27+
if (number > 2) {
28+
integers.add(number);
29+
}
30+
return integers.stream().mapToInt(i -> i).toArray();
31+
}
32+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.examplehub.maths;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import java.util.Arrays;
6+
7+
import static org.junit.jupiter.api.Assertions.*;
8+
9+
class PrimeFactorsTest {
10+
11+
@Test
12+
void testPrimeFactors() {
13+
assertTrue(Arrays.equals(new int[]{2}, PrimeFactors.primeFactors(2)));
14+
assertTrue(Arrays.equals(new int[]{2, 2, 3}, PrimeFactors.primeFactors(12)));
15+
assertTrue(Arrays.equals(new int[]{3, 3, 5, 7}, PrimeFactors.primeFactors(315)));
16+
}
17+
}

0 commit comments

Comments
 (0)