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 prime(int x)
{
    int i;
    for(i=2;i*i<=x;i++)
    {
        if(x%i==0) return 1;
    }
    return 0;
}

int main(void)
{
    long int n,i=2,num;
    scanf("%ld",&n);
    num=n;
    printf("%ld:",n);
    while(i<=n)
    {
        if(prime(i)==1) i++;
        else if(num%i!=0) i++;
        else
        {
            printf(" %ld",i);
            num/=i;
        }
    }
    printf("\n");
    
    return 0;
}