更相减损法

更相减损法(求最大公因数的另一种写法)

思路:

1.如果两数相等,返回其中一个
2.如果两个数都是偶数,那么同时除以2,否则进入3
3.将两数中大者减去两数中小者,然后再用差值和减数中的大者减小者,直到差值和减数相等
4.将除以2时所除去2的积乘以等数(最后差值和减数相等的值)即为最大公因数

int gcd(int x, int y) {
	if (x == y) return x;
	else if (x > y) return gcd(x - y, y);
	else return gcd(x, y - x);
}

缺点

如果遇到大数时,可能要减很久,时间复杂度接近\(O(n)\)

posted @ 2023-04-23 19:28  nobodyL  阅读(312)  评论(0)    收藏  举报