我們就以常見的輾轉相除法來練習
輸入兩個整數,以大的為被除數,小的為除數
(1) 52 > 48 ,所以以52為被除數,48為除數
52是48的1倍,餘數是4
(2) 接著以48當被除數,4為除數
48是4的12倍,餘數就是零
當餘數為零時就結束計算,答案就是4
用map方式將使用者輸入的兩個值放入a、b兩個變數中
設定gcd函數
先判定a、b兩數,將大的數設為a
大的數a當被除數,小的b當除數,餘數放入「r」
接下來b是較大數,所以a=b,把b的值放入a
b=r,把r的值放入b中
判斷b>0,如果沒有整除就繼續,否則就回傳a
a就是最後兩數的最大公因數
其實這一題可以參考後面章節的遞迴方式來處理,您應該有發現它是規則可循的:
當然也可使用最簡單的迴圈來處理,假設輸入a=26,b=16。迴圈x從1開始處理到x=16,判斷x是否同時能整除a and b,如果是,就將x值放入串列中,最後印出串列的最後一個值就知道最大公因數是多少了。
您是否有發現,再延伸下去就可以判斷兩數是否互質。這就可以交給您自己練習了。