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;
using static System.Console;
using System.Text;
using System.IO;

namespace AOJ
{
    class Program
    {
        static public long[] Sarray() { return ReadLine().Trim().Split().Select(long.Parse).ToArray(); }
        static public List<long> Slist() { return ReadLine().Split().Select(long.Parse).ToList(); }

        //18.4 素因数分解
        static List<long> primefactorize(long n)
        {
            var primes = new List<long>();
            for (var i = 2; i * i <= n; ++i)
            {
                if (n % i == 0)
                {
                    while (n % i == 0)
                    {
                        primes.Add(i);
                        n /= i;
                    }
                }
            }
            if (n != 1) primes.Add(n);
            return primes;
        }
        static void Main(string[] args)
        {
            var n = Sarray()[0];
            var ans = primefactorize(n);
            ans.Sort();
            WriteLine($"{n}: {string.Join(" ", ans).Trim()}");
        }
    }
}