歐幾里德算法,又稱輾轉相除法,用於計算兩個整數a,b的最大公約數。
公式:gcd(a,b) = gcd(b,a mod b)
所以我們可以這麼做:
- 取大的數爲large,小的數爲small。
- 如果large%small == 0,則small即爲gcd。否則進入3。
- 將large賦值爲原small,將small賦值爲原large%small。重複2。
C++代碼實現如下:
int gcd(int a, int b) {
int s = a < b ? a : b;
int l = a > b ? a : b;
int tmp = -1;
while (s) {
tmp = s;
s = l%s;
l = tmp;
}
return l;
}