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;
using System.Linq;
using System.Collections.Generic;

public class PrimeFactorize
{
    public static void Main()
    {
        var n = int.Parse(Console.ReadLine());
        
        var primes = new List<int>();
        Do(primes, n, 2);
//        primes = CalcPrimes(n, 2).ToList();
        
        Console.WriteLine(string.Format("{0}: {1}", n, string.Join(" ", primes.Select(x => x.ToString()).ToArray())));
    }
    
    
    private static void Do(List<int> primes, int input, int denom)
    {
        if (denom * denom > input)
        {
            primes.Add(input);
        }
        else if (input % denom == 0)
        {
            primes.Add(denom);
            Do(primes, input / denom, denom);
        }
        else
        {
            if (denom == 2)
                Do(primes, input, denom + 1);
            else
                Do(primes, input, denom + 2);
        }
    }
    
//    private static IEnumerable<int> CalcPrimes(int input, int denom)
//    {
//        while (input > denom)
//        {
//            yield return Calc(ref input, ref denom);
//            denom++;
//        }
//    }
//    
//    private static int Calc(ref int input, ref int denom)
//    {
//        if (input == denom)
//        {
//            return denom;
//        }
//        else if (input % denom == 0)
//        {
//            return denom;
//        }
//        else
//        {
//            input /= denom;
//            return Calc(ref input, ref ++denom);
//        }
//    }
}
// Define other methods and classes here