gcd即最大公约数,lcm即最小公倍数。

首先给出a×b=gcd×lcm

证明:令gcd(a,b)=k,a=xk,b=yk,则a×b=x*y*k*k,而lcm=x*y*k,所以a*b=gcd*lcm。

所以求lcm可以先求gcd,而求gcd的方法就是辗转相除法,也叫做欧几里德算法,核心为gcd(m,n)=gcd(n,m%n)

证明:令 k=gcd(m,n),则 k|m 并且 k|n;

  令 j=gcd(n, m mod n), 则j|n 并且 j|(m mod n);

  对于m, 可以用n 表示为 m=pn+(m mod n);

  由引理可知 j|m(其中 x=p,y=1), 又 j|n,于是 j 是 m 和 n 的公约数(但不一定是最大的);

  因为 k 是 m 和 n 的最大公约数,所以必有 k≥j;

  通过另一种表示形式:(m mod n)=m-pn,同理可得:

  k|(m mod n),又k|n,于是 k 是 (m mod n) 和 n 的公约数(也不一定是最大的);

  同样由 j 是 n 和 (m mod n) 的最大公约数可以得到 j≥k;

  由常识,得出结论 k=j,

  即gcd(m,n) = gcd(n, m mod n) ,得证。

代码实现:

while循环:

1 LL gcd(LL a, LL b){
2     LL t;
3     while(b){
4         t = b;
5         b = a % b;
6         a = t;
7     }
8     return a;
9 }

递归:

1 LL gcd(LL a, LL b){
2     return b ? gcd(b, a%b) : a;
3 }

求lcm=a*b/gcd即可,但碰到一些恐怖的数据可能会溢出,应改成lcm=a/gcd*b。

最后给出一些公式:

gcd(ka, kb) = k * gcd(a, b)

lcm(ka, kb) = k * lcm(a, b)

lcm(S/a, S/b) = S/gcd(a, b)

参考:https://www.cnblogs.com/ider/archive/2010/11/16/gcd_euclid.html

      https://www.cnblogs.com/linyujun/p/5167914.html

转载于:https://www.cnblogs.com/FrankChen831X/p/10526233.html

数论----gcd和lcm相关推荐

  1. 数论(一)——素数,GCD,LCM

    这是一个数论系列:) 一.素数 ×费马小定理 Theorem: 设 p 是一个素数,a 是一个整数且不是 p 的倍数,那么 很遗憾,费马小定理的逆定理是不成立的.对 a = 2,满足的非素数 n 是存 ...

  2. 已知gcd和lcm求a+b最小和?------数论

    题意 给出2个数a,b的 gcd(最大公约数n) 和 lcm(最小公倍数m),求所有符合条件的a,b中, 的最小 值. 思路 暴力枚举.根据 gcd(a,b)lcm(a,b)=ab 我们可以得到 ab ...

  3. GCD and LCM Aizu - 0005(辗转相除)+GCD LCM Inverse POJ - 2429(java或【Miller Rabin素数測试】+【Pollar Rho整数分解】)

    题目:GCD and LCM Aizu - 0005 Write a program which computes the greatest common divisor (GCD) and the ...

  4. 浅析欧几里德算法 GCD和LCM

    前言 欧几里德算法作为有着非常简短的实现的算法,可能很多初学者(包括当时的我)都不求甚解.本文给出了GCD.LCM的性质,以及欧几里德算法的实现.证明和时间复杂度推导. 这里是我的个人网站: http ...

  5. hdu-4497 GCD and LCM

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4497 题目大意: 给出三个数的gcd和lcm,求出这三个数有多少种可能性 解题思路: 设lcm / ...

  6. 1575 Gcd and Lcm

    1575 Gcd and Lcm ∑i=1n∑j=1i∑k=1ilcm(gcd(i,j),gcd(i,k))设f(n)=∑i=1n∑j=1nlcm(gcd(i,n),gcd(j,n))f(p)=3p2 ...

  7. 【dfs】GCD与LCM(jzoj 1608)

    GCD与LCM 题目大意: 给出a,b的最大公因数和最小公倍数,求出符合条件的a,b的最小差值 样例输入 6 36 样例输出 6 数据范围限制 提示 数据说明: 对于50%的数据,1<=a< ...

  8. YTU 3795 GCD 和 LCM

    题目描述 编写一个程序,计算给定 aaa 和 bbb 的最大公约数 (GCD) 和最小公倍数 (LCM) . 0<a,b≤ 20000000000 lcm(a,b)≤2000000000 数据集 ...

  9. 【备战蓝桥】JavaB组算法小讲解——GCD和LCM

    大家好,这里是祁十一!今天为大家整理了一下GCD和LCM的内容. 目录 一.GCD(最大公约数) 1.定义 2.性质 3.代码实现 <1>Java自带函数 <2>辗转相除法 二 ...

最新文章

  1. 6.java设计模式
  2. 【Linux】一步一步学Linux——ifup命令(152)
  3. 百度获取图片 json格式解析
  4. windows网络编程第二版 第三章 Internet Protocol 读书笔记
  5. 数据抽象能力---适合任何行业
  6. linux查看cpu占用率_Linux 性能查看
  7. DotDensityRenderer
  8. 软件工程——成品展示
  9. 五种 JSP页面跳转方法详解
  10. IE和ff下javascript解释的区别
  11. 澳洲CE毕业意向FullStackDeveloper
  12. Android 安装包没有签名文件问题
  13. 分享一下个人3年的运维经验
  14. 支付平台网站安全解决方案
  15. QGC编译报错error C2220: 警告被视为错误 最佳解决方法
  16. flutter中android子工程报错,Flutter混合Android
  17. Windows XP中手动安装驱动程序的方法
  18. 数学建模 | MATLAB学习 | 插值 一维插值函数、三次样条插值
  19. 2020年3月31日 生活思考 ~ 子贡论时
  20. hfs文件服务器模板,【全功能专用】Http File Server (HFS) 专用HFS模板 最终修订版

热门文章

  1. java中子类继承父类程序执行顺序问题
  2. boost::bind的使用
  3. 为树莓派安装远程桌面服务
  4. centos 禁用root登录
  5. 【树莓派 Raspberry-Pi 】系统安装及一些必要的配置
  6. 网购切莫小看1毛钱 暗藏信用卡诈骗玄机
  7. CASS 7.1 和 AutoCAD 2006的安装使用
  8. Apache+PHP配置过程详解
  9. syntax error near unexpected token
  10. Present ViewController详解