Problem:
Prime Factorization

Factorize a given integer n.

Input

n

An integer n is given in a line.

Output

Print the given integer n and :. Then, print prime factors in ascending order. If n is divisible by a prime factor several times, the prime factor should be printed according to the number of times. Print a space before each prime factor.

Constraints

2 ≤ n ≤ 109

Sample Input 1

12

Sample Output 1

12: 2 2 3

Sample Input 2

126

Sample Output 2

126: 2 3 3 7

Solution in JAVA (judge verdict: Accepted)

import java.util.*;
import java.io.*;
 
class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        int n = Integer.parseInt(br.readLine());
        List<Integer> list = new LinkedList<Integer>();
        System.out.print(n+":");
 
        for (int i=2; i*i<=n; i++) {
            while (n%i == 0) {
                n /= i;
                list.add(i);
            }
        }
 
        if (n > 1)
            list.add(n);
 
        for (int i : list) {
            System.out.print(" "+i);
        }
        System.out.println();
 
        br.close();
    }
}