TQC+ 程式語言Python 509 最簡分數
題目說明:
請撰寫一程式,讓使用者輸入二個分數,分別是x/y和m/n(其中x、y、m、n皆為正整數),計算這兩個分數的和為p/q,接著將p和q傳遞給名為compute()函式,此函式回傳p和q的最大公因數(Greatest Common Divisor, GCD)。再將p和q各除以其最大公因數,最後輸出的結果必須以最簡分數表示。
範例輸入1
1,2
1,6
範例輸出1
1/2 + 1/6 = 2/3
範例輸入2
12,16
18,32
範例輸出2
12/16 + 18/32 = 21/16
程式碼:
import math
def compute(p, q):
return math.gcd(p, q)
x, y = eval(input())
m, n = eval(input())
p = (x * n + m * y) / compute(x * n + m * y, y * n)
q = (y * n) / compute(x * n + m * y, y * n)
print('%d/%d + %d/%d = %d/%d' %(x, y, m, n, p, q))
2 則留言
oo
不好意思可以解釋一下這次的程事碼嗎
JamesBang
因為最後要變成最簡分數,所以需要使用到 math 套件的 gcd 方法,算出最後的分子和分母的最大公因數(要將分子和分母除以這個最大公因數,才能算出最簡分數。),因此在一開始匯入 math 套件。
compute 函式要帶入兩個參數,就是分子和分母,然後呼叫 math 套件的 gcd 方法,再將算出來的最大公因數回傳(return)。
變數 x, y, m, n 就是使用者輸入的值(y 分之 x 和 n 分之 m)、
p 為兩數相加後的分子、
q 為兩數相加後的分母。
要將這兩個分數相加,最直接的方法就是換成相同分母,所以 q 的部分直接將 y 乘以 n 就好,然後因為要算成最簡,所以再除以 p 和 q 的最大公因數。
p 同上
最後 print 輸出