码迷,mamicode.com
首页 > 其他好文 > 详细

最小公倍数

时间:2015-12-21 12:12:21      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

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

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

数学式表达: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!