各位在國小時都學過因數分解,都瞭解怎麼樣用紙筆計算出結果,現在由你來敎電腦做因數分解。

因數分解就是把一個數字,切分為數個質數的乘積,如 12=2^2 * 3

其中, 次方的符號以 ^ 來表示

輸入說明
輸入共一行。每行包含一個整數,符合大於 1 且小於等於 100000000

輸出說明
針對每一行輸入整數輸出一個因數分解字串

此題有些微複雜, 故將重點提出於 def analysis(num)函式, 可以直接將函式內容貼在主程式 else 下方即可
此題需要判斷的兩個點
(1) 1 次方不用顯示次方, 大於一次方需要顯示次方
(2) 每一個位數需要加上「*」, 最後一個位數不用加上「*


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 定義一個名為 analysis 的函數,用於對輸入的整數進行因式分解
def analysis(num):
i=2 # 從 2 開始作為潛在的因數
count=0 # 計算因數出現的次數

# 無限循環,直到 num 被完全分解, 是否結束由 if 判斷
while 1:
if num % i == 0: # 如果 i 是因數
count+=1 # 增加因數的次數
num=num//i # 更新 num 值
else: # 不是因數, 準備輸出 or i 往後移動
if count==1: # 如果因數出現一次
print(i,end='') # 直接輸出因數
elif count > 1: # 如果因數出現多次
print(str(i)+'^'+str(count),end='') # 輸出因數和次數
if num==1: # 如果 num 已經被完全分解
break # 跳出循環
elif count >= 1: # 如果因數次數大於等於 1
print(' * ',end='') # 輸出乘法符號
count=0 # 重置因數次數
i+=1 # 嘗試下一個潛在因數

# 讀取使用者輸入的整數
num=int(input())
if num == 1: # 如果輸入為 1
print("1") # 直接輸出 1
else :
analysis(num) # 調用 analysis 函數進行因式分解

a010. 因數分解



作者: 微風