你所必須知道的三種基本求兩個數最大公約數的演算法
阿新 • • 發佈:2018-12-12
1 迭代法求最大公約數
/*迭代法求最大公約數
*原理:m n r;將r賦值給n,n賦值給m
*/
#include <iostream>
using namespace std;
int Gcd(int m, int n) {
int r;
r = m%n;
while(r) {
m = n;
n = r;
r = m%n;
}
return n;
}
int main(){
int m, n;
cin >> m >> n;
cout<< Gcd(m, n);
return 0;
}
2 歐幾里德遞迴演算法求最大公約數
/*歐幾里德遞迴演算法求最大公約數*/ #include <iostream> using namespace std; int Gcd(int m, int n); int RGcd(int m, int n) { if(m==0) return n; return Gcd(n%m, m); } int Gcd(int m, int n) { if(m > n) { int t = m; m = n; n = t; } return RGcd(m, n); } int main(){ int m, n; cin >> m >> n; cout<< Gcd(m, n); return 0; }
3 連續的整數的檢測演算法求最大公約數
/*連續的整數的檢測演算法求最大公約數*/ #include <iostream> using namespace std; int Gcd(int m, int n) { if(m==0) return n; if(n==0) return m; int t = m > n ? n: m;//把較小的那個數賦值給t while(m%t || n%t) t--; return t; } int main(){ int m, n; cin >> m >> n; cout<< Gcd(m, n); return 0; }