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: Accepted)

using System;

public class hello
{
    public static void Main()
    {
        var n = int.Parse(Console.ReadLine().Trim());
        var on = n;
        Console.Write("{0}:", n);
        var te = 1;
        while (true)
        {
            if (n % 2 == 0) { Console.Write(" 2"); n /= 2; te *= 2; }
            else break;
        }
        if (n == 1) goto end;
        var sq = Math.Max((int)Math.Sqrt(n), 3);
        for (int i = 3; i <= sq+1; i += 2)
            while (true)
            {
                if (n % i == 0)
                {
                    Console.Write(" {0}", i);
                    n /= i; te *= i;
                    if (te == on) goto end;
                }
                else break;
            }
        Console.Write(" {0}", n);
        end:;
        Console.WriteLine();
    }
}