Skip to content

Python 509 最簡分數

Python TQC

題目說明:

請撰寫一程式,讓使用者輸入二個分數,分別是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

題目解析

問題分析:

這個問題要求我們寫一個程式,接收兩個分數 \( \frac{x}{y} \)\( \frac{m}{n} \)(其中 \( x \)\( y \)\( m \)\( n \) 皆為正整數),然後計算這兩個分數的和 \( \frac{p}{q} \)。接著將 \( p \)\( q \) 傳遞給名為 compute() 的函式,此函式回傳 \( p \)\( q \) 的最大公因數(Greatest Common Divisor, GCD)。最後,將 \( p \)\( q \) 各除以其最大公因數,輸出的結果必須以最簡分數表示。

解題思路:

  1. 定義一個函式 compute(x, y),用於計算兩個數的最大公因數。
  2. 在主程式中,接收使用者輸入的兩個分數 \( \frac{x}{y} \)\( \frac{m}{n} \),以逗號分隔。
  3. 根據分數加法的原則,先將兩個分數的分子相加並通分,得到 \( p \)\( q \)
  4. 調用 compute() 函式,計算 \( p \)\( q \) 的最大公因數。
  5. \( p \)\( q \) 各除以其最大公因數,以獲得最簡分數表示。
  6. 輸出計算結果。

思考方向:

  1. 注意處理輸入的資料型態,以及輸入格式的要求。
  2. 確保對最大公因數的計算方法有清晰的理解。
  3. 確保函式 compute() 的邏輯正確,能夠準確計算兩個數的最大公因數。

Solution

1
2
3
4
5
6
7
8
import math
def compute(x, y):
    return math.gcd(x, y)
x, y = eval(input())
m, n = eval(input())
p = int((x * n + y * m) /(compute(x * n + y * m, y * n)))
q = int(y * n / (compute(x * n + y * m, y * n)))
print("{}/{} + {}/{} = {}/{}".format(x,y,m,n,p,q))

Warning

小心除完後會是浮點數的話記得要轉為int數


Last update : 13 novembre 2024
Created : 13 novembre 2024

Comments

Comments