碾转相除法:①gcd(la, b)=gcd(b, a%b) ②0的最大公约数就是另一个数
两个数的乘积等于这两个数的最大公约数与最小公倍数的积。最小公倍数就是a * b / gcd(a, b)。
int gcd(long a, long b) { return b == 0 ? a : gcd(b, a % b);//gcd(a,b) = gcd(b,a % b) 0的最大公约数就是另一个数 } int lcm(int a, int b) {//两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×[a,b]=a×b if (a == 0 || b == 0) { return 0; } return a * b / gcd(a, b); } int main() { long a = 12; long b = 36; cout << gcd(a, b)<<endl; cout << lcm(a, b) << endl; }