ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

最大公约数、最小公倍数、辗转相除法的求解和证明

2022-02-21 18:03:25  阅读:180  来源: 互联网

标签:... 正整数 GCD 公倍数 cap 最大公约数 除法 互质


  两个正整数的最大公约数(Greatest Common Divisor,GCD)在计算机中通常使用辗转相除法计算,最小公倍数(Least Common Multiple, LCM)可以使用GCD来计算。下面首先介绍GCD和LCM。然后介绍辗转相除法的计算形式,并证明为什么可以得出GCD。

最大公约数

性质

  若正整数$\{a_1,a_2,...,a_n\}$的GCD为$r$,则$\{a_1/r,a_2/r,...,a_n/r\}$互质(GCD为1)。

充分性

  假设正整数$\{a_1,a_2,...,a_n\}$的GCD为$r$,则它们可以被表示为$\{p_1r,p_2r,...,p_nr\}$。若$\{p_1,p_2,...,p_n\}$不互质,有最大公约数$r_1\ne 1$,则$\{a_1,a_2,...,a_n\}$的最大公约数为$r_1r$与假设不符。

必要性

  显然成立:一系列正整数除以某一数,如果结果互质,则这个数是这些正整数的GCD。

多个数的最大公约数

  任意正整数$\{a_1,a_2,...,a_n\}$都可以被它们对应的所有质因子的乘积表示。将它们所有质因子分别表示为集合$A_1,A_2,...,A_n$(给重复质因子加下标),则它们的最大公约数的质因子为

$\begin{aligned}&A_1\cap A_2\cap...\cap A_n\\=&(...((A_1\cap A_2)\cap A_3)\cap...)\cap A_n\end{aligned}$

  因此多个数的GCD可以通过,两两数之间的GCD迭代求出。两个正整数的GCD则可以使用辗转相除法解决。

最小公倍数

性质

  若正整数$\{a_1,a_2,...,a_n\}$的LCM为$R$,则$\{R/a_1,R/a_2,...,R/a_n\}$互质。

充分性

  假设$\{a_1,a_2,...,a_n\}$的LCM为$R$,若$\{R/a_1,R/a_2,...,R/a_n\}$不互质,有公因子$r$,则有更小的公倍数$R/r$,与假设不符。

必要性

  对于正整数$\{a_1,a_2,...,a_n\}$,假设存在正整数$R_1\ne R_2$,使得$\{R_1/a_1,R_1/a_2,...,R_1/a_n\}$互质,且$\{R_2/a_1,R_2/a_2,...,R_2/a_n\}$互质。

  若$R_1/R_2=k$为正整数,则

$\{R_1/a_1,R_1/a_2,...,R_1/a_n\}=\{kR_2/a_1,kR_2/a_2,...,kR_2/a_n\}$

  有$k$为因子,不互质,与假设不符。

  若$R_1/R_2=k$不是整数,则

$\{R_1/a_1,R_1/a_2,...,R_1/a_n\}=\{kR_2/a_1,kR_2/a_2,...,kR_2/a_n\}$

  不是正整数,与假设不符(互质前提是正整数)。  

  综上不可能存在两个或以上不同的$R$,使得$\{R/a_1,R/a_2,...,R/a_n\}$互质。

  又由于最小公倍数$R$一定存在,使得$\{R/a_1,R/a_2,...,R/a_n\}$互质。所以这样的$R$只存在一个,且是LCM。

多个数的最小公倍数

  上面证明得出,对于正整数$\{a_1,a_2,...,a_n\}$,只要获得某个$R$,使得$\{R/a_1,R/a_2,...,R/a_n\}$互质,这个$R$就是LCM。

  将正整数表示为GCD和对应互质数的乘积

$\{a_1,a_2,...,a_n\}=\{p_1r,p_2r,...,p_nr\}$

  令$R=p_1p_2...p_nr$,可以发现$\{R/a_1,R/a_2,...,R/a_n\}$互质(证明写下面)。因此$\{a_1,a_2,...,a_n\}$的LCM为

$\displaystyle R=p_1p_2...p_nr=\frac{a_1a_2...a_n}{r^{n-1}}$

互质证明

  将$\{p_1,p_2,...,p_n\}$的所有质因子分别表示为集合$A_1,A_2,...,A_n$,显然有$A_1\cap A_2\cap...\cap A_n=\varnothing$。设全集$E=A_1\cup A_2\cup...\cup A_n$,则$\{R/a_1,R/a_2,...,R/a_n\}$的质因子集合为$\sim A_1,\sim A_2,...,\sim A_n$。由于

$\begin{aligned}&\sim A_1\cap\sim A_2\cap...\cap\sim A_n\\=&\sim(A_1\cup A_2\cup...\cup A_n)\\=&\sim E\\=&\varnothing\end{aligned}$

  所以$\{R/a_1,R/a_2,...,R/a_n\}$互质。

辗转相除法

  辗转相除法通过迭代计算两个正整数的GCD。每次用较小数对较大数取余,然后将较小数赋值到较大数,余数赋值到较小数,直到余数为0,此时较小数为最大公约数。

例子

  计算319,377的最大公约数(算法迭代过程):

 迭代   较大数   较小数   余数 
0 - 377 319
1 377 319 58
2 319 58 29
3 58 29 0

  得出最大公约数为29。

证明  

  假设正整数$a>b$,计算它们的最大公约数。首先计算出它们的余数$t$:

$a \, \text{mod}\, b = t$

  则$a$可以表示为:

$a=pb+t$

  其中$p$为$a/b$的正整数商。若$t=0$,则显然$b$为$a,b$的最大公约数。若$t\neq 0$,我们只需证明$\{a,b\}$与$\{b,t\}$有相同的最大公约数,迭代就可以进行下去。

  将$\{a,b\}$的公约数表示为$r_1\in R_1$,$R_1=\{a,b的公约数\}$,则有:

$t =a-pb= p_ar_1-pp_br_1=(p_a-pp_b)r_1$

  显然$\{a,b\}$的公约数$r_1$也是$t$的约数,因而$r_1$是$\{a,b,t\}$的公约数,有$R_1\subseteq R$,$R=\{a,b,t的公约数\}$。又因为$\{a,b,t\}$的公约数一定是$\{a,b\}$的公约数,所以有$R\subseteq R_1$。因此$R_1=R$。

  将$\{b,t\}$的公约数表示为$r_2\in R_2$,$R_2=\{b,t的公约数\}$,则有:

$a =pb+t= pp_{b1}r_2+p_tr_2=(pp_{b1}+p_t)r_2$

  显然$\{b,t\}$的公约数$r_2$也是$a$的约数,因而$r_2$是$\{a,b,t\}$的公约数,有$R_2\subseteq R$。与上同理,得出$R_2 = R$。

  于是$R_1=R=R2$,因此,$\{a,b\}$与$\{b,t\}$有相同的最大公约数。

标签:...,正整数,GCD,公倍数,cap,最大公约数,除法,互质
来源: https://www.cnblogs.com/qizhou/p/15918370.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有