def count_nums(list, value): #在list中計算有幾個value 如果list中有2個value 輸出為value^2, 有1個value 輸出則為value 沒有value則輸出空字串
count = list.count(value)
if count > 1:
return f"{value}^{count}"
elif count == 1:
return str(value)
else:
return ""
num = int(input())
factors = [] #定義一些變數
array = []
output = ""
for i in range(2, int(num ** 0.5 + 1)): #找到num所有的因數
if num % i == 0:
factors.append(i)
if i != num // i:
factors.append(num // i)
factors.sort()
if(factors == []): # 如果num為質數 factors為[] 直接輸出num即可
print(num)
else: #如果num不是質數(有找到因數) 繼續進行以下步驟
while (num != 1): # 質因數分解 比如說num = 20 最後array的結果為[2,2,5]
for i in factors:
if num % i == 0:
array.append(i)
break
num = num / i
for i in factors: # 把array轉換成字串 並加上題目要求的條件 例如[2,2,5]轉換為"2^2 * 5 這時候需要用到前面算出來的所有因數 factors"
if (count_nums(array, i) != ""):
output = output + count_nums(array, i) + " * "
print(output[0:-3]) # 上面輸出的output會多一個" * " 像是"2^2 * 5 * "所以把倒數3個字符移除