File size: 989 Bytes
9438a57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.util.*;

/**
 * Prime Factorization
 * 
 * 
 * Factors an int using naive trial division.
 * 
 * Input:
 *     n: An int to factor
 * 
 * Output:
 *     A list of the prime factors of n in sorted order with repetition
 * 
 * Precondition:
 *     n >= 1
 * 
 * Examples:
 *     >>> get_factors(1)
 *     []
 *     >>> get_factors(100)
 *     [2, 2, 5, 5]
 *     >>> get_factors(101)
 *     [101]
 *
 * @author derricklin
 */
public class GET_FACTORS {
    public static ArrayList<Integer> get_factors(int n) {
        if (n == 1) {
            return new ArrayList<Integer>();
        }
        int max = (int)(Math.sqrt(n) + 1.0);
        for (int i=2; i < max; i++) {
            if (n % i == 0) {
                ArrayList<Integer> prepend = new ArrayList<Integer>(0);
                prepend.add(i);
                prepend.addAll(get_factors(n / i));
                return prepend;
            }
        }

        return new ArrayList<Integer>(Arrays.asList(n));
    }
}