总时间限制: 1000ms 内存限制: 65536kB
描述
给定两个正整数,求它们的最大公约数。
输入
有多组数据,每行为两个正整数,且不超过int可以表示的范围。
输出
行对应输出最大公约数。
样例输入
4 88 6200 300
样例输出
42100
思路
根据初等数论的欧几里得算法,我们可以知道:
已知2个正整数 a, b (其中 a > b ),他们的最大公约数 gcd(a, b) = gcd(b, a mod b)
边界条件为: gcd(a, 0) = a
代码
#include <iostream>using namespace std;int euclid(int a, int b) {int temp;if(a < b) {temp = a;a = b;b = temp;}if( b == 0 ) return a;else return euclid(b, a % b);}int main() {int a, b;while( cin >> a >> b ) {cout << euclid(a, b) << endl;}return 0;}
