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.Scanner;

class Main
{
	public static void main(String[] args){
	
	Scanner scan = new Scanner(System.in);
	
	int[] a = new int[1000];
	int x = 0;
	int z = 1;
		
	int n = scan.nextInt();
		
	a[0] = n;
	
	int na = n;
	
	for(int i=2; i<=n/2; i++){
		if((n / z) % i == 0){
			a[x] = i;
			x++;
			z *= i;
			i = 1;
		}
	}
		if(x==0){
			x = 1;}
	
		System.out.print(na+":");
	
		for(int i=0; i<x; i++){
			System.out.print(" "+a[i]);
		}
	
		System.out.print("\n");
	}
}