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 C++ (judge verdict: Time Limit Exceeded)

#include<cstdio>

int isPrime(int x){
	int i;
	if(x<2) return 0;
	else if(x==2) return 1;
	if(x%2==0) return 0;
	for(i=3;i*i<=x;i+=2){
		if(x%i==0) return 0;
	}
	return 1;
}

int main(){
	int n;
	int div=2;
	scanf("%d",&n);
	printf("%d:",n);
	while(isPrime(n) == 0){
		while(n%div == 0){
			printf(" %d",div);
			n /= div;
		}
		//printf("n=%d\n",n);
		while(1){
			div++;
			if(isPrime(div)==1) break;
		}
		//printf("div=%d\n",div);
	}
	printf(" %d\n",n);
	return 0;
}