###### tags: `python-TQC` # TQC+ 程式語言Python 508 最大公因數 1. 題目說明: 請開啟PYD508.py檔案,依下列題意進行作答,計算兩個正整數的最大公因數,使輸出值符合題意要求。作答完成請另存新檔為PYA508.py再進行評分。。 2. 設計說明: 請撰寫一程式,讓使用者輸入兩個正整數x、y,並將x與y傳遞給名為compute()的函式,此函式回傳x和y的最大公因數。 3. 輸入輸出: 輸入說明 兩個正整數(以半形逗號分隔) x,y 輸出說明 最大公因數 ![](https://i.imgur.com/yEGWJJG.png) > https://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E5%85%AC%E5%9B%A0%E6%95%B8#%E4%BA%92%E8%B4%A8%E6%95%B0 > ```python= #method 1 <值因數分解法> def compute(x,y): gcd = 1 for i in range(2,(min(x,y)+1)): if x%i == 0 and y%i == 0: gcd = i return gcd (x,y) = eval(input()) print(compute(x,y)) #method 2 很容易理解的方法<質因數分解法> def compute(x,y): gx = [] for i in range(1,x): if x%i == 0: gx.append(i) gy = [] for i in range(1,y): if y%i == 0: gy.append(i) max1 = [a for a in gx if a in gy] #找gx,gy最大值 return(max(max1)) (x,y) = eval(input()) print(compute(x,y)) #method 3 偷吃步方法<直接呼叫數學模組的gcd> import math def compute(x,y): g = math.gcd(x,y) return g (x,y) = eval(input()) print(compute(x,y)) ``` **維基百科的寫法,研究了很久,但我腦筋還是很難一時轉過來(利用輾轉相除法的概念,程式執行效率較佳)** ![](https://i.imgur.com/ilUASfQ.png)