Saturday, October 20, 2012

Mathematics11

Q11. Print prime factors of a given number. e.g. for 54 Prime factors: 2, 3, 3, 3.
Answer:

import java.util.ArrayList;
import java.util.List;

public class Mathematics11 {
    public static int[] getPrimeFactors(int n) {
        List<Integer> factors = new ArrayList<Integer>();

        for (int i = 2; i * i <= n; i++) {
            while (n % i == 0) {
                factors.add(i);
                n /= i;
            }
        }

        if (n > 1) {
            factors.add(n);
        }

        int[] primeFactors = new int[factors.size()];

        int i = 0;
        for (Integer p : factors) {
            primeFactors[i++] = p;
        }

        return primeFactors;
    }

    public static void main(String[] args) {
        for (int i = 2; i <= 20; i++) {
            System.out.print("Prime factors for " + i + ": ");
            for (int n : getPrimeFactors(i)) {
                System.out.print(n + " ");
            }
            System.out.println();
        }
    }
}

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.