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

小学奥数 最大公约数与最小公倍数

时间:2015-10-27 08:13:50      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

依然要用到均值不等式的知识,证明在这里:http://www.cnblogs.com/xtx1999/p/4913067.html

因为知道了两个数的最大公约数和最小公倍数,于是就知道了两个数的乘积。根据均值不等式,两个数和一定两数和一定,它们两个越接近乘积越大。所以乘积一定时,它们越接近和就越小所以枚举即可。

#include<iostream>
#include<cstdio>
using namespace std;
int gcd,lcm,a,b,tot,ans=10000000;
inline int Gcd(int x,int y)
{
    return y==0?x:Gcd(y,x%y);
}
int main()
{
    scanf("%d%d",&gcd,&lcm);
    tot=gcd*lcm;
    for(int i=1;i*i<=tot;i++)
      if(tot%i==0&&Gcd(i,tot/i)==gcd)
          ans=min(ans,i+tot/i);
    cout<<ans;
}

小学奥数 最大公约数与最小公倍数

标签:

原文地址:http://www.cnblogs.com/xtx1999/p/4913070.html

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