#45644: python


keeper0811@gmail.com (顏悅)

學校 : 不指定學校
編號 : 274741
來源 : [59.124.228.83]
最後登入時間 :
2025-03-28 14:56:12
a010. 因數分解 | From: [59.124.228.83] | 發表日期 : 2025-03-28 15:20

n = int(input())  # 取得題目的輸入值,並轉為整數
factor = 2  # 0 和 1 不能為因數,所以從 2 開始
ans = []  # 存放質因數分解的結果

# 如果輸入的值的是 0 或 1,則顯示錯誤訊息
if n == 0 or n == 1:
    print("請輸入大於1的正整數")  # 這行是本人額外加的提示訊息,本題非必要

# 進行質因數分解,當 n > 1 時繼續執行
while n > 1:
    count = 0  # 記錄該質因數的次方(預設為 0)
    
    # 當 n 能被 factor 整除時,記錄該質因數的次方
    while n % factor == 0:  # 當n能被factor整除時,進入迴圈(第一次進入迴圈時, factor為2,之後factor會逐漸變大)
        count += 1  # 質因數次方 +1
        n //= factor  # n 除以factor後覆蓋n
    
    # 如果 count 不為 0,表示 factor 是 n 的質因數之一
    if count != 0:
        if count == 1:
            ans.append(f"{factor}")  # 如果該質因數的次方是 1,直接記錄數字
        else:
            ans.append(f"{factor}^{count}")  # 如果次方大於 1,記錄成「質數^次方」的格式

    factor += 1  # factor加1後,進入下一次迴圈

print(" * ".join(ans))  # 用 "*" 連接所有因數,並輸出結果

 
ZeroJudge Forum