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.Text;
using System.Collections.Generic;
using System.Linq;
class Solve{
    public Solve(){}
    StringBuilder sb;
    public static int Main(){
        new Solve().Run();
        return 0;
    }
    void Run(){
        sb = new StringBuilder();
        Calc();
        Console.Write(sb.ToString());
    }
    void Calc(){
        int N = int.Parse(Console.ReadLine());
        bool[] b = new bool[100000];
        int p = 2;
        sb.Append(N+":");
        while(N != 1 && p < 100000){
            if(!b[p]){
                while(N % p == 0){
                    sb.Append(" "+p);
                    N /= p;
                }
                for(long i=(long)p*p;i<100000;i+=p){
                    b[(int)i] = true;
                }
            }
            p++;
        }
        if(N != 1){
            sb.Append(" "+N);
        }
        sb.Append("\n");
    }
}