• 最大公约数与最小公倍数


    一:最大公约数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之redis-cluster(集群配置)
    MariaDB主从复制,redis发布订阅,持久化,以及主从同步
    Vue之添加全局变量
    Linux之nginx入门
    Linux中python3,django,redis以及mariab的安装
    Linux系统优化及基础命令
    linux基本命令
    Linux常用命令大全
    Flask之项目配置,目录构建,闪现
    C语言II博客作业04
  • 原文地址:https://www.cnblogs.com/whtblog/p/8901995.html
Copyright © 2020-2023  润新知