「学习笔记」最大公因数和最小公倍数、唯一分解定理

前言#

终于开始正式写数论了,之前的快速幂和进制转化不算,莫名有些激动。
废话不多说,我们直接

进入正题!#

定义#

还是老样子,先搞明白定义
gcd 最大公因数
lcm 最小公倍数
此外,为了方便,规定 gcd(0,a)=a

公式#

a×b=gcd(a,b)×lcm(a,b)
你一定很好奇这是怎么来的,对吧?
别急,这就向你解释,但在这里,我们要插入一个小小的定理——唯一分解定理

半路杀出的唯一分解定理#

看着很难,其实很好理解
就是一个正整数都可以拆成 a1k1×a2k2×a3k3×a4k4 的形式,有且仅有这一种形式
其中 a1,a2 都是质数,k1,k2 都是指数
说白了就是质因数分解
比如说 252=23+32+71
在这里,如果一个数 a 是另一个数 b 的因数,ab,那么 a 分解质因数所得的 k1 , k2 都小于等于 b 所对应的 k1 , k2
比如 84252 的因数
84=22+31+71
很显然,是符合我们上面的结论的
同理,如果一个数 a 是另一个数 b 的倍数,ab,那么 a 分解质因数所得的 k1 , k2 都大于等于 b 所对应的 k1 , k2
比如 25284 的倍数

84=22+31+71252=23+32+71

很显然,也是符合的
如果

a=d1k1+d2k2+d3k3+d4k4b=d1j1+d2j2+d3j3+d4j4

一个数 c=d1g1+d2g2+d3g3+d4g4ab 的公因数
由上面的结论可得 gimin(ki,ji)
如果要求 gcd(a,b)
那么 gcd(a,b)=d1min(k1,j1)+d2min(k2,j2)+d3min(k3,j3)+d4min(k4,j4)
同理,一个数 c=d1g1+d2g2+d3g3+d4g4ab 的公倍数,则gimax(ki,ji)
要求 lcm(a,b),则lcm(a,b)=d1max(k1,j1)+d2max(k2,j2)+d3max(k3,j3)+d4max(k4,j4)
所以 gcd(a,b)×lcm(a,b)=d1max(k1,j1)+min(k1,j1)+d2max(k2,j2)+min(k2,j2)+d3max(k3,j3)+min(k3,j3)+d4max(k4,j4)+min(k4,j4)
也就是 gcd(a,b)×lcm(a,b)=d1k1+j1+d2k2+j2+d3k3+j3+d4k4+j4=a×b
所以我们证明了结论 a×b=gcd(a,b)×lcm(a,b)

gcd ——欧几里得算法#

欧几里得算法,其实就是辗转相除法

公式#

gcd(a,b)=gcd(b,amodb)
如何证明它的正确呢?
这里要用到弱化版本——更相减损术

同样半路杀出来的更相减损术#

公式#

gcd(a,b)=gcd(ab,b)

证明#

如果cacb,则a=cx,b=cy,那么ab=c(xy),所以cab
也就是说 c 如果是 ab 的公因数,那它也一定是 ab 的公因数,所以 gcd(a,b)=gcd(ab,b) 是成立的

回归求 gcd#

我们利用更相减损术继续往下推
gcd(a,b)=gcd(ab,b)=gcd(abb,b)=gcd(abbb,b)=
a 一直减 b,减到最后就成为了 gcd(amodb,b)
所以 gcd(a,b)=gcd(amodb) ,但为了方便递归,我们将参数换一下,改为 gcd(b,amodb)

代码#

gcd

int gcd(int a,int b)
{
    if(b==0)    return a;
    return gcd(b,a%b);
}

小结#

lcm ,可以直接用 agcd(a,b)×b 来完成
这里打好基础,后面的扩展欧几里得算法才能学会
本文到这里就结束了,喜欢的话可以支持一下ヾ(≧▽≦*)o

作者:yifan0305

出处:https://www.cnblogs.com/yifan0305/p/16526662.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

转载时还请标明出处哟!

posted @   yi_fan0305  阅读(543)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示