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

namespace NTL_1_A
{
	class Program
	{
		static void Main(string[] args)
		{
			int n = int.Parse(Console.ReadLine());

			Console.WriteLine($"{n}: {string.Join(" ", PrimeFactorize(n))}");
		}

		private static IEnumerable<int> PrimeFactorize(int n)
		{
			int i = 2;
			int buf = n;

			while(Math.Pow(i, 2) <= n) {
				if(buf % i == 0) {
					buf /= i;
					yield return i;
				}
				else {
					i++;
				}
			}

			if(buf != 1) {
				yield return buf;
			}
		}
	}
}