算法简介
计算最大公因数的欧几里得算法
假设M >= N
(如果 N > M ,则循环的第一次迭代将它们互相交换)
代码实现
/*
计算最大公因数的欧几里得算法
假设M >= N
(如果 N > M ,则循环的第一次迭代将它们互相交换)
*/
#include <iostream>
using namespace std;
unsigned int Gcd( unsigned int M, unsigned int N );
int main() {
unsigned int m, n;
cin >> m >> n;
cout << Gcd(m, n) << '\n';
return 0;
}
unsigned int Gcd( unsigned int M, unsigned int N ) {
unsigned int Rem;
while ( N > 0 ) {
Rem = M % N;
M = N;
N = Rem;
}
return M;
}
分析
这是一个快速算法。
定理=>
如果 M > N,则 M mod N < M / 2 。