思路:
两个整数的最小公倍数等于他们的乘积除以他们的最大公约数。所以问题的关键是编写最大公约数函数。
辗转相除法(求最大公约数):
假设求x, y的最大公约数,则:
(1)x除以y取余得s,若s = 0,则y即为两数的最大公约数,输出,结束。
(2)若s != 0,则将y赋给x,s赋给y再返回上一步操作,继续执行。
例如,求20和45的最大公约数,过程如下:
45 % 20 = 5;
20 % 5=0;
所以最大公约数为5。
答案:
#include<iostream>
using namespace std;
int main()
{
int a,b;
int lcd(int x,int y);
int gcd(int x,int y);
cout<<"please enter a,b:";
cin>>a>>b;
cout<<"a,b lcd is:"<<lcd(a,b)<<endl;
cout<<"a,b gcd is:"<<gcd(a,b)<<endl;
return 0;
}
int lcd(int x,int y)
{
int s;
while(y!=0)
{
s=x%y;
x=y;
y=s;
}
return x;
}
int gcd(int x,int y)
{
int z;
z=x*y/lcd(x,y);
return z;
}