标签:
方法:利用最大公约数来求最小公倍数
原理:两个数的最大公约数与最小公倍数的乘积等于这两个数的积。
数学式表达:a*b=gcd(a,b)*lcm(a,b);
说明:gcd(a,b)为a,b两数的最大公约数,lcm(a,b)为a,b两数的最小公倍数.
代码实现:
#include<iostream>
using namespace std;
int gcd(int a,int b)
{
return (b==0)?a:gcd(b,a%b);
}
int lcm(int a,int b)
{
return a/gcd(a,b) * b; //思考:为什么不用a*b/gcd(a,b)呢?
}
int main()
{
freopen("p.in","r",stdin);
freopen("p.out","w",stdout);
int a,b;
cin>>a>>b;
cout<<lcm(a,b)<<endl;
return 0;
}
备注与说明:为什么不用a*b/gcd(a,b)呢?而用 a/gcd(a,b) * b,因为结果为int ,a,b太大的话,前一种先要计算a*b,而这个值可
能超出范围了。后一种做法是先做除法,除完后再乘,就回避了这种可能。
标签:
原文地址:http://www.cnblogs.com/jjzzx/p/5062927.html