辗转相除法就是反复的做除法运算,如求x和y的最大公约数和最小公倍数,如果y不为0,就将y赋值给x,再将前一步得到的x%y的值赋给y,直到y为0,那么x即为最大公约数,原始的x*y/最大公约数就是所求的最小公倍数,代码如下:
#include<iostream>
using namespace std;
int gcd(int x, int y) {
int z = y, t = x*y;
while (x%y != 0) {
z = x%y;
x = y;
y = z;
}
return z;
}
int main() {
int x, y;
cout << "Input the two numbers:";
cin >> x >> y;
cout << "gcd=" << gcd(x,y) << endl;
cout << "lcm=" << x*y / gcd(x, y) << endl;
return 0;
}