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 Python3 (judge verdict: Accepted)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
input:
126

output:
126: 2 3 3 7
"""

import sys


def is_prime(n):
    if n == 2:
        return True
    elif n < 2 or not n % 2:
        return False

    return pow(2, n - 1, n) == 1


def prime_factorize(n):
    if is_prime(n):
        return [n]

    ans = list()
    d = 2

    while pow(d, 2) <= n:
        while not n % d:
            ans.append(d)
            n //= d
        d += 1

    if n > 1:
        ans.append(n)

    return ans


if __name__ == '__main__':
    _input = sys.stdin.readlines()
    n1 = int(_input[0])
    print(str(n1) + ':', *prime_factorize(n1))