最小公倍数

方法:利用最大公因数来求最小公倍数

原理:两个数的最大公因数与最小公倍数的乘积等于这两个数的积。

数学式表达: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,因为a,b太大的话,前一种先要计算a*b,而这个值可能超出范围了。后一种做法是先做除法,除完后再乘,就回避了这种可能。

posted @ 2015-12-21 11:39  九江镇中  阅读(396)  评论(0编辑  收藏  举报