可以使用递归,注意循环时的范围选择,一般选择(2,int(math.sqrt(num))+1),范围过大会导致运行超时。

import sys
import math

def primeFactor(num,data):
    flag = 0
    for i in range(2,int(math.sqrt(num))+1):
        if num%i==0:
            data=primeFactor(int(num//i),data)
            flag=1
            break
    if flag==0:
        data.append(num)
        return data
    if(i==num-1):
        i=i+1
    data.append(i)
    return data
    
            
num = int(input())
#print(num)
data=[]
data = primeFactor(num,data)
data.sort()
order=[]
for i in range(0,len(data)):
    order.append(str(data[i]))
print(' '.join(order))