最大公约数
分析
使用 **欧几里得算法(即辗转相除法)**来求两个数的最大公约数,其基本原理为:
- 当
b != 0
时,不断对a % b
进行递归; - 当
b == 0
,说明余数为0
,返回的a
就是最大公约数
时间复杂度
- 单次
gcd(a, b)
的时间复杂度为O(log min(a, b))
所以总复杂度为 O(n * logN)
,其中 N
为输入数据的最大值
空间复杂度
空间复杂度为 O(logN)
C++代码
|
|
使用 **欧几里得算法(即辗转相除法)**来求两个数的最大公约数,其基本原理为:
b != 0
时,不断对 a % b
进行递归;b == 0
,说明余数为 0
,返回的 a
就是最大公约数gcd(a, b)
的时间复杂度为 O(log min(a, b))
所以总复杂度为 O(n * logN)
,其中 N
为输入数据的最大值
空间复杂度为 O(logN)
|
|