import sys

num1 = int(input())
num2 = int(num1 ** 0.5) + 1  # 根号取整
# print(num2)  # 调试信息
list1 = []
# for i in range(2, num1 + 1): # 直接遍历会超时
#     while num1 % i == 0:
#         list1.append(i)
#         num1 = num1 / i
def is_prime(n):
    """判断是否为质数(n≥2)"""
    if n <= 1:
        return False
    if n <= 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    # 优化后的试除法
    i = 5  # 已排除2和3的倍数, 序列:5, 7, 11, 13, 17, 19,...
    w = 2  # 控制步长,初始为2,后续在2,4之间交替
    # n < 25的时候都能通过if判断,直接true or false
    while i * i <= n:
        if n % i == 0:
            return False
        i += w
        w = 6 - w  # 优化:跳过偶数和3的倍数
    return True


for i in range(2, num2 + 1 ): 
    if is_prime(i) != True:
        continue
    while num1 % i == 0:
        list1.append(i)
        num1 = num1 // i

if num1 != 1 and is_prime(num1) == True: 
    list1.append(num1)
print(*list1, sep=' ')

alt

核心知识: 优化判断质数,n因数只需从1遍历√n,除法的'/' '//' '%',