一、課本例題的再研究
案例:寫出求兩個正整數a,b(a > b)的最大公約數的一個算法.
這是蘇教版高中數學必修3第26頁上的一道案例,其算法的設計思想是利用歐幾里得輾轉相除法,找出a,b的最大公約數. 具體算法步驟是:計算出a b的余數r,若r = 0,則為的最大公約數;若r≠0,則把前面的除數作為新的被除數,把余數作為新的除數,繼續運算,直到余數為0,此時的除數即為正整數的最大公約數.
偽代碼如圖1:
我們知道同一問題如果考慮的角度不同,那么算法的設計思想可能不同,于是又可以有下面的算法設計:
算法1 由于兩個正整數a,b(a > b)的最大公約數必小于等于b,可以利用循環思想讓變量從1開始檢索到b,直到能同時滿足能被a,b整除的最大的那一個數為止.
算法2 仿上,讓變量從b開始檢索到第一個滿足同時能被a,b整除的數即為a,b的最大公約數. 偽代碼如圖3:
二、課本例題的拓展研究
拓展1 寫出求三個正整數a,b,c(a > b > c)的最大公約數的一個算法.
算法1 先用歐幾里得輾轉相除法找出a,b的最大公約數,然后再用輾轉相除法求出剛才求出的最大公約數與c的最大公約數.
偽代碼如圖4:
算法2 由于三個正整數a,b,c(a>b>c)的最大公約數必小于等于c,可以利用循環思想讓變量從1開始檢索到c,直到能同時滿足能被a,b整除的最大的那一個數為止.
偽代碼如圖5:
算法3 仿上,讓變量從c開始檢索到第一個滿足同時能被a,b,c整除的數即為a,b,c的最大公約數.
偽代碼如圖6:
點評 從實際效果來看,第二種算法比第一種算法更實用,更易理解一些. 同時仿上,我們可以寫出求個正整數n的最大公約數的算法.
拓展2 設計計算兩個正整數a,b的最小公倍數的一個算法.
算法1 求出a,b的最大公約數,然后用a,b之積除以a,b的最大公約數,
偽代碼如圖7:
算法2 由于兩個正整數a,b的最小公倍數必小于等于ab,可以利用循環思想讓變量從ab開始檢索到1,直到能同時滿足整除a,b的最小的那一個數為止.
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”