📅  最后修改于: 2023-12-03 14:41:01.777000             🧑  作者: Mango
欧几里得算法,也称最大公约数算法,是一个用于计算两个正整数的最大公约数的算法。
假设两个正整数为m和n(m > n),则根据欧几里得算法,有如下公式:
m = nq + r
其中q为商,r为余数。
若r为0,则n为最大公约数;否则,进行以下操作:
将被除数n作为除数,上一步的余数r作为被除数,进行一次除法运算,得到商q和余数r。
重复上述步骤,直到余数r为0为止。
使用递归方式实现欧几里得算法:
int gcd(int m, int n) {
if (n == 0) {
return m;
}
return gcd(n, m % n);
}
非递归方式实现欧几里得算法:
int gcd(int m, int n) {
while (n != 0) {
int temp = m % n;
m = n;
n = temp;
}
return m;
}
输入:m = 48, n = 18
输出:6
#include <iostream>
using namespace std;
int gcd(int m, int n) {
if (n == 0) {
return m;
}
return gcd(n, m % n);
}
int main() {
int m = 48, n = 18;
cout << "gcd(" << m << ", " << n << ") = " << gcd(m, n) << endl;
return 0;
}
欧几里得算法是一个较为简单且亲民的算法,适用于计算两个正整数的最大公约数。使用递归方式实现代码更加简洁,但可能会降低性能;非递归方式实现代码结构稍显复杂,但性能更加优秀。