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.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();
		long n = Long.parseLong(str);
		System.out.print(n + ":");
		long div = n;
		Boolean isBig = true;
		for (long i = 2; isBig; i++) {
			if (div % i == 0) {
				div = div / i;
				System.out.print(" " + i);
				i--;
			}
			isBig = i < Math.pow(div, 0.5);
		}
		if (div != 1) {
			System.out.println(" " + div);
		} else {
			System.out.println();
		}
	}
}