辗转相除法:高效求解最大公约数的算法
辗转相除法,也称为欧几里德算法,是一种用于求两个整数的最大公约数(GCD)的常用算法。辗转相除法使用了递归的思想,在每一步中,通过用较小数除以较大数得到余数,然后将较大数替换为原来的较小数,将余数替换为较大数,然后重复这个过程,直到余数为0,此时较大数即为最大公约数。
具体步骤如下:
- 假设我们要求两个整数a和b的最大公约数,其中a >= b。
- 用a除以b,得到余数r。
- 如果r等于0,说明b能整除a,此时a就是最大公约数。
- 如果r不等于0,将b替换为原来的a,将r替换为原来的b,然后重复步骤2,直到r等于0。
举个例子,假设我们要求36和48的最大公约数:
- 用36除以48,得到余数36。
- 将48替换为36,将36替换为48。
- 用36除以48,得到余数12。
- 将48替换为12,将12替换为48。
- 用12除以48,得到余数0。
- 余数为0,所以最大公约数为48。
辗转相除法的时间复杂度是O(log(min(a, b))),其中a和b是输入的两个整数。因此,它是一种高效的方法来计算最大公约数。
原文地址: https://www.cveoy.top/t/topic/nGZ 著作权归作者所有。请勿转载和采集!