File tree Expand file tree Collapse file tree 1 file changed +19
-9
lines changed
src/main/java/edu/thoughtworks/training Expand file tree Collapse file tree 1 file changed +19
-9
lines changed Original file line number Diff line number Diff line change 44import java .util .Collection ;
55
66public class PrimeFactor {
7- public Collection <Integer > generate (int input ) {
8- Collection <Integer > primeFactors = new ArrayList <Integer >();
9- for (int i = 2 ; i <= Math .sqrt (input ); ++i ) {
10- if (input % i == 0 ) {
11- primeFactors .add (i );
12- input /= i ;
13- }
147
15- }
16- if (input != 1 ) primeFactors .add (input );
8+ private static final int FIRST_PRIME = 2 ;
179
10+ public Collection <Integer > generate (int number ) {
11+ Collection <Integer > primeFactors = new ArrayList <>();
12+ generate (number , FIRST_PRIME ,primeFactors );
1813 return primeFactors ;
1914 }
15+
16+ private void generate (final int number , final int possiblePrimeFactor , final Collection <Integer > primeFactors ) {
17+ if (number != 1 ) {
18+ if (isDivisibleBy (number , possiblePrimeFactor )) {
19+ primeFactors .add (possiblePrimeFactor );
20+ generate (number /possiblePrimeFactor , possiblePrimeFactor , primeFactors );
21+ } else {
22+ generate (number , possiblePrimeFactor +1 , primeFactors );
23+ }
24+ }
25+ }
26+
27+ private boolean isDivisibleBy (final int number , final int possiblePrimeFactor ) {
28+ return number % possiblePrimeFactor == 0 ;
29+ }
2030}
You can’t perform that action at this time.
0 commit comments