zoukankan      html  css  js  c++  java
  • 最大公约数与最小公倍数

    一:最大公约数gcd【Greatest Common Divisor】

      1、一般多采用辗转相除法寻找两个数的最大公约数gcd:总是用较大的数%较小的数,然后用余数取代较大数。

        例如:gcd(a,b),令i=a/b;j=a%b,那么gcd(a,b)=gcd(b*i+j,b)=gcd(j,b):用j取代了较大的a;

           而且我们可知:j<b是一定成立的,否则就是b*(i+1)+...了:所以让gcd(j,b)=gcd(b,j);

           直到两个数种较小的那个数为0时,返回的那个较大的数就是最大公约数;

      2、如果要求多个数的最大公约数:gcd(a,b,c,...)

         先求gcd(a,b),再求gcd(gcd(a,b),c)......即可;

    二:最小公倍数 lcm【Least Common multiple】 

      对于两个数的最小公倍数lcm和最大公约数gcd,满足以下条件:

      a*b=gcd(a,b)*lcm(a,b);

      所以,lcm借用gcd一步到位;

    三:gcd与lcm的java代码如下: 

     1 private  int gcd(int a,int b){
     2     while(b!=0){
     3         int temp=a%b;
     4         a=b;    //注意b>temp,b与temp比较是较大的那个
     5         b=temp;
     6     }
     7     return a;
     8 }
     9 private  int lcm(int a,int b){
    10     return (a*b)/gcd(a,b);
    11 }

     

  • 相关阅读:
    大话算法-排序-希尔排序
    Linux三剑客-awk
    Linux三剑客-sed
    大话算法-排序-冒泡排序
    大话算法-排序-选择排序
    删除Win10菜单中的幽灵菜单(ms-resource:AppName/Text )
    微信推送模板消息
    获取当前域名的根域
    MVC 全站开启缓存,缓解服务器的请求压力
    MVC 开启gzip压缩
  • 原文地址:https://www.cnblogs.com/whtblog/p/8901995.html
Copyright © 2011-2022 走看看