利用指標把三個數從大到小輸出
最大公約數:指某幾個整數共有約數中最大的乙個
方法一:相減法 也叫更相減損法
思路:1、如果a > b a = a - b;
2、如果b > a b = b - a;
3、假如a = b,則 a或 b是最大公約數;
4、如果a != b;則繼續從一開始執行;
5、也就是說迴圈的判斷條件為a != b,直到a = b時,迴圈結束。
舉例說明:
a = 28 b = 21
a>b
則 a = a - b = 28 - 21 = 7
b = 21
b>a
則 b = b-a = 21 - 7 = 14
a = 7
b>a
則 b = b - a = 14 - 7 = 7
a = 7
此時 a = b =7
迴圈結束
**展示
#define _crt_secure_no_warnings 1
#include
int main()
結果展示
方法二
思路:1.選出a,b中最小的乙個數字放到c中
2.分別用a,b對c求餘數,即看是否能被c整除
3.直到a,b同時都能被c整除
4.如不能整除,c– (c的值減一) 繼續從2開始執行
5.也就是說該迴圈的判斷條件為 a,b能否同時被c整除,只要有乙個數不能被c整除,迴圈繼續執行
舉例說明:
a = 9 b = 4
將其中最小的數字賦予c
c = 4
a%c = 1 ,b%c = 0 a,b不能同時被c整除 迴圈繼續
c– ,c = 3
a%c = 0 ,b%c = 1 a,b不能同時被c整除 迴圈繼續
c– ,c = 2
a%c = 1 ,b%c = 0 a,b不能同時被c整除 迴圈繼續
c– ,c = 1
a%c = 0 ,b%c = 0 a,b同時被c整除 迴圈結束 c是a和b的最大公約數
**展示
#define _crt_secure_no_warnings 1
#include
int main()
printf("最大公約數為: %d \n",c);
}return
0;}
結果展示
方法三:輾轉相除法
思路:
1.將兩整數求餘 a%b = c
2.如果c = 0;則b為最大公約數
3.如果c != 0,則 a = b;b = c;繼續從1開始執行
4.也就是說該迴圈的是否繼續的判斷條件就是c是否為0
舉例說明:
a = 21 b = 28
c = a%b = 21%28 = 21, 則c = 21 此時c不為0
執行 a = b , b = c , a = 28 ,b = 21
c = a%b = 28%21 = 7 ,則c = 7 此時c不為0
執行 a = b , b = c , a = 21 , b = 7
c = a%b = 21%47 = 0 ,則c = 0 迴圈結束
**展示:
#define _crt_secure_no_warnings 1
#include
int main()
printf("最大公約數為: %d\n",b);
}return
0;}
結果展示
用三種演算法求最大公約數
窮舉法 將兩個數a,b中較小的值賦給q,然後a除q,b也除q,若兩者的餘數同時為0 時,那麼q就是兩者的最大公約數。若不等於0,則將q 1,然後繼續a除q,b 除q,直至餘數同時為0。include void qongjufa printf 最大公約數為 d n m,n,q 相除法 將兩數ab相除,...
最大公約數簡便演算法 求最大公約數的4種演算法
for z 0 z 10000000 z 迴圈只是為了增加程式的執行時間,讓我們體會演算法的時間複雜度。演算法一 短除法 想法,採用短除法找出2個數的所有公約數,將這些公因子相乘,結果就是2個數的最大公約數。找公因子,只能使用蠻力法 include include void main int m 2...
最大公約數三種方法
一 輾轉相除法 輸入兩個數a和b,如果a和b都小於等於0,則結束。否則,進入迴圈 c b a,b a,a c 當a等於0時,結束迴圈,輸出最大公約數b.二 輾轉相減法 輸入兩個數a和b,當a不等於b時,進入迴圈 當a b時,a a b 否則,b b a 直到a b時,結束迴圈,輸出最大公約數a。三 ...