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 <stdio.h>

int main(void)
{
    int n, i = 2;
    scanf("%d", &n);
    printf("%d:", n);
    while(n -1){
        if(1.0 * n / i == n / i){
            printf(" %d", i);
            n /= i;
        }else{
            i++;
            if((i % 2) - 1) i++;
        }
    }
    printf("\n");
    return 0;
}