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.ArrayList;
import java.util.List;
import java.util.Scanner;

//?´??????°????§£?????????????????°??????
public class Main {

	public static void main(String[] args) {
		// TODO ?????????????????????????????????????????????
		Scanner sc = new Scanner(System.in);
		long n = Long.parseLong(sc.nextLine());
		System.out.print(n + ":");
		List<Long> pf = new ArrayList<>();
		while (true) {
			if (n == 1) {
				break;
			}
			for (long i = 2; i <= Math.ceil(Math.sqrt(n)); i++) {
				if (n % i == 0) {
					n = n / i;
					pf.add(i);
					break;
				}
				if (i == Math.ceil(Math.sqrt(n))) {
					pf.add(n);
					n = 1;
					break;
				}
			}
		}
		for (long i : pf) {
			System.out.print(" " + i);
		}
		System.out.print("\n");
	}

}