基础算法题——GCD欧几里得最大公约数算法

欧几里德算法,又称辗转相除法,用于计算两个整数a,b的最大公约数。

公式:gcd(a,b) = gcd(b,a mod b)

所以我们可以这么做:

  1. 取大的数为large,小的数为small。
  2. 如果large%small == 0,则small即为gcd。否则进入3。
  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;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章