问题链接:http://bailian.openjudge.cn/practice/3248
Note:
正整数a与b的最大公约数是指a与b的所有公约数中最大的那个公约数。一般用gcb(a,b)来表示a和b的最大公约数,而求解最大公约数常用欧几里得算法(即辗转相除法)。
1.递归式:gcb(a,b)= gcb(b,a%b);
2.递归边界:gcb(a,0)= a;
求解最大公约数代码!!!模板。要背。
int gcb(int a, int b){
if(b == 0)
return a;
else
return gcb(b, a%b);
}
求解最小公倍数!!!模板。要背。
正整数a与b的最小公倍数是指a与b的所有公倍数中最小的那个公倍数。
最小公倍数的求解是在最大公约数的基础上进行。当得到a和b的最大公约数d之后,可以马上得到a和b的最小公倍数是a*b/d
由于a*b在实际计算中可能溢出,因此应写成 a / d * b;
描述
给定两个正整数,求它们的最大公约数。
输入
有多组数据,每行为两个正整数,且不超过int可以表示的范围。
输出
行对应输出最大公约数。
样例输入
4 8 8 6 200 300
样例输出
4 2 100
#include<cstdio>
#include<iostream>
using namespace std;
int gcb(int a, int b){
if(b == 0)
return a;
else
return gcb(b, a%b);
}
int main(){
int a, b;
while(scanf("%d %d", &a,&b) != EOF){
cout << gcb(a, b) << endl;
}
return 0;
}