欧几里得算法(辗转相除法)示例:
用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。
计算公式:
示例:
算法代码:
1.递归算法:
#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
if (a % b == 0) return b;
return gcd(b, a % b);
}
int main() {
int n, m;
cin >> n >> m;
cout << gcd(n, m) << endl;
return 0;
}
输出结果:
5 3
1
2.循环
#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
while (b != 0) {
int tmp = a % b;
a = b;
b = tmp;
}
return a;
}
int main() {
int n, m;
cin >> n >> m;
cout << gcd(n, m) << endl;
return 0;
}
输出结果:
6 2
2
2019





