求兩個正整數的最大公約數

2021-07-29 07:14:05 字數 1017 閱讀 9072

基本要求:從鍵盤輸入兩個整數,輸出兩個整數的最大公約數。用c或c++語言實現程式解決問題。

1.      程式風格良好(使用自定義注釋模板)

2.      使用三種演算法解決問題

3.      提供友好的輸入輸出,並進行輸入資料的正確性驗證

方法一:窮舉法

窮舉法,顧名思義,就是乙個乙個試,即遍歷兩個整數中較小的數到零的所有數,如果能夠同時被兩個整數整除,則這個數就為這兩個數的最大公約數。

具體實現**如下:

#includeint main()

int gdc(int a,int b)//定義乙個函式用來求最大公約數

方法二:相減法

相減法,即通過連續相減求得兩個數的最大公約數。

如果a>b,則a=a-b;

如果a如果a=b,則a和b均為最大公約數。

例如:a=27,b=15;

則27-15=12,15-12=3,12-3=9,9-3=6,6-3=3。則3位27和15的最大公約數。

具體實現**如下:

#includeint main()

int gdc(int a,int b)//定義乙個函式用來求最大公約數

return a;

}

方法三:輾轉相除法

輾轉相除法,即利用連續相除來求最大公約數。

例:a=36,b=27

36%27=9,27%9=0。則9即為36和27的最大公約數。

具體實現**如下:

#includeint main()

int gdc(int a,int b)//定義乙個函式求最大公約數

return a;

}

總結:

通過完成這次作業我學到了許多東西,自己原本只會用窮舉法求兩個數的最大公約數,通過這次作業,我也掌握了相減法和輾轉相除法這兩種方法。在以後學習過程中,我需要開拓自己的思維,,嘗試著去用多種不同的方法來解決問題。

求兩個正整數的最大公約數

求兩個正整數的最大公約數問題 版本 v1.0 主要功能 1 輾轉相除法 a b得餘數c 若c 0,則b即為兩數的最大公約數,結束 若c 0,則a b,b c,再回去執行 2 相減法 兩整數a和b 若a b,則a a b 若a b,則a 或b 即為兩數的最大公約數,結束 若a b,則再回去執行 3 窮...

求兩個正整數的最大公約數Python版

求兩個數的最大公約數我分別採用輾轉相除法,輾轉相減法,列舉法來求得。最小公倍數就是兩個數之積除以最大公約數的結果。1.將兩整數求餘 a b x 2.如果x 0 則b為最大公約數 3.如果x 0,則 a b b x 繼續從1開始執行 4.也就是說該迴圈的是否繼續的判斷條件就是x是否為0 輾轉相除法 d...

給定兩個正整數,求它們的最大公約數。

題目 給定兩個正整數,求它們的最大公約數。include include using namespace std 利用遞迴的思想求最大公約數 關鍵要理解第一次求最大公約數未果 之後,這時候第一次要求的最大公約數就等於 求b對a b的最大公約數,於是產生遞迴關係。int fun int a,int b...