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 <iostream>
#include <stdio.h>
using namespace std;
#define rep(i,x,to) for(int i;i<0;i++)

bool IsPrime(int n){
  for(int i=2;i*i<=n;i++){
    if(n%i==0) return false;
  }
  return true;
}

int main() {
	int n;
	cin >> n;
	cout << n <<":";
	
		for(int i=2;i<=n&&n!=1;i++){
			while(n%i == 0){
				if(n%i==0){
					printf(" %d",i);
					n /= i;
				}
			}
		}
	cout << endl;
	return 0;
}