点击查看代码
#include<cstdio>
#include<algorithm> //swap()
using namespace std;
#pragma warning(disable:4996)
/* 使用递归方法求a与b的最大公约数(初始条件a>b,如果a<b则交换两者)
(1)递归式:gcd(a, b) = gcd(b, a % b)
(2)递归边界:gcd(a, 0) = a,0与任意一个整数a的最大公约数都是a(不是0) */
int gcd_func(int a, int b) {
if (b == 0) return a;
else return gcd_func(b, a % b);
}
int main() {
int a = 4, b = 16;
if (a < b) swap(a, b); //初始时固定a>b,如果a<b则交换两者,再求最大公约数
int gcd = gcd_func(4, 16); //4和16的最大公约数是4
int lcm = a / gcd * b; //4和16的最小公倍数是16
printf("%d %d\n", gcd, lcm);
return 0;
}