最大公约数与最小公倍数

最大公约数与最小公倍数

一、定义

1. 最大公约数

a1,a2,a3,...,aka_1, a_2, a_3, ... , a_ka1,a2,a3,...,akkkk 个非 0 整数,如果 ∃d∈Z,d≠0\exist d \in Z, d \neq 0dZ,d=0 ,使得 d∣a1,d∣a2,d∣a3,...,d∣akd \mid a_1, d \mid a_2, d \mid a_3, ... , d \mid a_kda1,da2,da3,...,dak ,则称 ddda1,a2,a3,...,aka_1, a_2, a_3, ... , a_ka1,a2,a3,...,ak 的公约数;

公约数中最大的一个称为最大公约数,记为 gcd⁡(a1,a2,a3,...,ak)\gcd(a_1, a_2, a_3, ... , a_k)gcd(a1,a2,a3,...,ak) ,其永远存在,最少为 1 ;

gcd⁡=1\gcd = 1gcd=1 时,称这 nnn 个数是互质或互约的,公约数一定是最大公约数的约数;

2. 最小公倍数

a1,a2,a3,...,aka_1, a_2, a_3, ... , a_ka1,a2,a3,...,akkkk 个非 0 整数,如果 ∃d∈Z,d≠0\exist d \in Z, d \neq 0dZ,d=0 ,使得 a1∣d,a2∣d,a3∣d,...,ak∣da_1 \mid d, a_2 \mid d, a_3 \mid d, ... , a_k \mid da1d,a2d,a3d,...,akd ,则称 ddda1,a2,a3,...,aka_1, a_2, a_3, ... , a_ka1,a2,a3,...,ak 的公倍数;

公倍数中最下的一个称为最小公倍数,记为 lcm(a1,a2,a3,...,ak)lcm(a_1, a_2, a_3, ... , a_k)lcm(a1,a2,a3,...,ak) ,其永远存在;

公倍数一定是最小公倍数的倍数;

3. 定理

lcm(a,b)∗gcd⁡(a,b)=ablcm(a, b) * \gcd(a, b) = ablcm(a,b)gcd(a,b)=ab

证明如下,

a,ba, ba,b 质因数分解,设 a,ba, ba,b 质因数集合并集为 {P1,P2,...,Pn}\{P_1, P_2, ... , P_n\}{P1,P2,...,Pn}

则设 a=P1k1∗P2k2∗...∗Pnkn(0≤ki,ki∈Z),b=P1j1∗P2j2∗...∗Pnjn(0≤ji,ji∈Z)a = P_1^{k_1} * P_2^{k_2} * ... * P_n^{k_n} (0 \leq k_i, k_i \in Z), b = P_1^{j_1} * P_2^{j_2} * ... * P_n^{j_n} (0 \leq j_i, j_i \in Z)a=P1k1P2k2...Pnkn(0ki,kiZ),b=P1j1P2j2...Pnjn(0ji,jiZ)

∴gcd⁡(a,b)=P1min⁡(k1,j1)∗P2min⁡(k2,j2)∗P3min⁡(k3,j3)∗...∗Pnmin⁡(kn,jn)\therefore \gcd(a, b) = P_1^{\min(k_1, j_1)} * P_2^{\min(k_2, j_2)} * P_3^{\min(k_3, j_3)} * ... * P_n^{\min(k_n, j_n)}gcd(a,b)=P1min(k1,j1)P2min(k2,j2)P3min(k3,j3)...Pnmin(kn,jn)

lcm(a,b)=P1max⁡(k1,j1)∗P2max⁡(k2,j2)∗P3max⁡(k3,j3)∗...∗Pnmax⁡(kn,jn)\quad lcm(a, b) = P_1^{\max(k_1, j_1)} * P_2^{\max(k_2, j_2)} * P_3^{\max(k_3, j_3)} * ... * P_n^{\max(k_n, j_n)}lcm(a,b)=P1max(k1,j1)P2max(k2,j2)P3max(k3,j3)...Pnmax(kn,jn)

∵min⁡(ki,ji)+max⁡(ki,ji)=ki+ji\because \min(k_i, j_i) + \max(k_i, j_i) = k_i + j_imin(ki,ji)+max(ki,ji)=ki+ji

∴gcd⁡(a,b)∗lcm(a,b)=P1k1+j1∗...∗Pnkn+jn=a∗b\therefore \gcd(a, b) * lcm(a, b) = P_1^{k_1 + j_1} * ... * P_n^{k_n + j_n} = a * bgcd(a,b)lcm(a,b)=P1k1+j1...Pnkn+jn=ab

二、辗转相除法

1. 说明

辗转相除法用于求两个数的最大公约数,又称欧几里得算法,其原理是 gcd⁡(a,b)=gcd⁡(b,a  mod  b)\gcd(a, b) = \gcd(b, a \; mod \; b)gcd(a,b)=gcd(b,amodb)

2. 证明

gcd⁡(a,b)=p\gcd(a, b) = pgcd(a,b)=p ,则

a=kp,b=gp,(k,g)=1,k,g∈Za = kp, b = gp, (k, g) = 1, k, g \in Za=kp,b=gp,(k,g)=1,k,gZ

由模运算放缩性得,

a  mod  b=kp  mod  gp=p(k  mod  g)a \; mod \; b = kp \; mod \; gp = p(k \; mod \; g)amodb=kpmodgp=p(kmodg)

∴gcd⁡(b,a  mod  b)=gcd⁡(gp,(k  mod  g)∗p)\therefore \gcd(b, a \; mod \; b) = \gcd(gp, (k \; mod \; g) * p)gcd(b,amodb)=gcd(gp,(kmodg)p)

∵(k,g)=1\because (k, g) = 1(k,g)=1

∴gcd⁡(b,a  mod  b)=p\therefore \gcd(b, a \; mod \; b) = pgcd(b,amodb)=p

三、扩展欧几里得算法

1. 说明

已知整数 a,ba, ba,b 时,一定 ∃x,y∈Z\exist x, y \in Zx,yZ 使得 ax+by=gcd⁡(a,b)ax + by = \gcd(a, b)ax+by=gcd(a,b)

证明如下,

ax1+by1=gcd⁡(a,b),bx2+(a  mod  b)y2=gcd⁡(b,a  mod  b)ax_1 + by_1 = \gcd(a, b), bx_2 + (a \; mod \; b)y_2 = \gcd(b, a \; mod \; b)ax1+by1=gcd(a,b),bx2+(amodb)y2=gcd(b,amodb)

由欧几里得定理可得,gcd⁡(a,b)=gcd⁡(b,a  mod  b)\gcd(a, b) = \gcd(b, a \; mod \; b)gcd(a,b)=gcd(b,amodb)

∴ax1+by1=bx2+(a  mod  b)y2\therefore ax_1 + by_1 = bx_2 + (a \; mod \; b) y2ax1+by1=bx2+(amodb)y2

整理得 ax1+by1=ay2+b(x2−⌊ab⌋y2)ax_1 + by_1 = ay_2 + b(x_2 - \lfloor\frac{a}{b}\rfloor y_2)ax1+by1=ay2+b(x2bay2)

∴∃x1=y2,y1=x2−⌊ab⌋y2\therefore \exist x_1 = y_2, y_1 = x_2 - \lfloor\frac{a}{b}\rfloor y_2x1=y2,y1=x2bay2

x1,y1x_1, y_1x1,y1 这组解由 x2,y2x_2, y_2x2,y2 得来,

xn,ynx_n, y_nxn,yn 关于 gcd⁡(a,0)\gcd(a, 0)gcd(a,0) 时,有

axn+byn=gcd⁡(a,0)=aax_n + by_n = \gcd(a, 0) = aaxn+byn=gcd(a,0)=a

∴xn=1,yn=0\therefore x_n = 1, y_n = 0xn=1,yn=0

∴∃xn,yn\therefore \exist x_n, y_nxn,yn

∴∃x,y\therefore \exist x, yx,y

2. 代码

思路

则模拟每次证明的思路进行辗转相除后更新 x,yx, yx,y 即可;

代码
int ex_gcd(int a, int b, int &x, int &y) {
	int tot1, tot2;
	if (!b) {
		x = 1, y = 0;
		return a;
	}
	tot1 = ex_gcd(b, a % b, x, y);
	tot2 = x;
	x = y;
	y = tot2 - a / b * y;
	return tot1;
}

四、裴蜀定理

1. 定理

对于不定方程 ax+by=max + by = max+by=m ,其有解的充要条件为 gcd⁡(a,b)∣m\gcd(a, b) \mid mgcd(a,b)m

证明如下,

  1. 必要性,即 ax+by=max + by = max+by=m 有解,可得 gcd⁡(a,b)∣m\gcd(a, b) \mid mgcd(a,b)m

    ∵ax+by=m\because ax + by = max+by=m 有解

    ∴∃x,y∈Z\therefore \exist x, y \in Zx,yZ 使得 ax+by=max + by = max+by=m

    ∵gcd⁡∣a,gcd∣b\because \gcd \mid a, gcd \mid bgcda,gcdb

    ∴gcd(a,b)∣ax+by\therefore gcd(a, b) \mid ax + bygcd(a,b)ax+by

    ∴gcd(a,b)∣m\therefore gcd(a, b) \mid mgcd(a,b)m

  2. 充分性,即 gcd(a,b)∣mgcd(a, b) \mid mgcd(a,b)m ,可得 ax+by=max + by = max+by=m 有解;

    由扩展欧拉定理得, ax+by=gcd⁡(a,b)ax + by = \gcd(a, b)ax+by=gcd(a,b) 一定有解

    ∵gcd(a,b)∣m\because gcd(a, b) \mid mgcd(a,b)m

    ∴ax+by=m\therefore ax + by = max+by=m 有解

2. 引理1

a,b∈Z+a, b \in Z^+a,bZ+ ,且 (a,b)=1(a, b) = 1(a,b)=1 ,则 ∄k<b∈Z+\not\exist k < b \in Z^+k<bZ+ ,使得 b∣kab \mid kabka

使用反证法,证明如下,

∃0<k<b∈Z\exist 0 < k < b \in Z∃0<k<bZ ,使得 b∣kab \mid kabka ,则 kakaka 中一定包含 bbb 的所有质因子

∵(a,b)=1\because (a, b) = 1(a,b)=1

∴a\therefore aa 中不可能包含 bbb 的质因子

∴k\therefore kk 定为 bbb 的倍数

0<k<b0 < k < b0<k<b 矛盾,假设不成立;

3. 推论

a,b∈Z+a, b \in Z^+a,bZ+(a,b)=1(a, b) = 1(a,b)=1 ,则 0,a,2a,3a,...,(b−1)a0, a, 2a, 3a, ... , (b - 1)a0,a,2a,3a,...,(b1)a 分别 mod  bmod \; bmodb 的余数互不相等;

证明使用反证法,如下,

如果存在 ia,ja,(0<j<i<b)ia, ja, (0 < j < i < b)ia,ja,(0<j<i<b) ,使得它们分别 mod  bmod \; bmodb 的余数相等,则 (i−j)∗a  mod  b==0(i - j) * a \; mod \; b == 0(ij)amodb==00<i−j<b0 < i - j < b0<ij<b 与引理 1 矛盾,假设不成立;

4. 引理2

(a,b)=1(a, b) = 1(a,b)=1 ,则 ∃k∈Z\exist k \in ZkZ 使 k∗a  mod  b=1k * a \; mod \; b = 1kamodb=1

证明如下,

根据推论, 0,a,2a,3a,...,(b−1)a0, a, 2a, 3a, ... , (b - 1)a0,a,2a,3a,...,(b1)a 分别 mod  bmod \; bmodb 的余数互不相等,且有 bbb 个,在 [0,b−1][0, b - 1][0,b1] 之间

∴∃k∈Z\therefore \exist k \in ZkZ 使得 k∗a  mod  b=1k * a \; mod \; b = 1kamodb=1

五、费马小定理

如果 ppp 为质数,且 a  mod  p≠0a \; mod \; p \neq 0amodp=0 ,则 ap−1  mod  1a^{p - 1} \; mod \; 1ap1mod1

证明如下,

(a∗2a∗3a∗...∗(p−1)a)  mod  p=(ap−1∗(p−1)!)  mod  p(a * 2a * 3a * ... * (p - 1)a) \; mod \; p = (a^{p - 1} * (p - 1)!) \; mod \; p(a2a3a...(p1)a)modp=(ap1(p1)!)modp

∵p\because pp 为质数,且 aaa 不为 ppp 的倍数,根据裴蜀定理推论有,

a  mod  p,2a  mod  p,3a  mod  p,...,(p−1)a  mod  pa \; mod \; p, 2a \; mod \; p, 3a \; mod \; p, ... , (p - 1)a \; mod \; pamodp,2amodp,3amodp,...,(p1)amodp 互不相等,且在 [1,p−1][1, p - 1][1,p1] 之间

∴(a∗2a∗...∗(p−1)a)  mod  p\therefore (a * 2a * ... * (p - 1)a) \; mod \; p(a2a...(p1)a)modp

=a  mod  p∗2a  mod  p∗...∗(p−1)a  mod  p= a \; mod \; p * 2a \; mod \; p * ... * (p - 1)a \; mod \; p=amodp2amodp...(p1)amodp

=(p−1)!  mod  p= (p - 1)! \; mod \; p=(p1)!modp

∴ap−1∗(p−1)!  mod  p=(p−1)!  mod  p\therefore a^{p - 1} * (p - 1)! \; mod \; p = (p - 1)! \; mod \; pap1(p1)!modp=(p1)!modp

∵p\because pp 为质数

∴(p,(p−1)!)=1\therefore (p, (p - 1)!) = 1(p,(p1)!)=1

∴ap−1  mod  1\therefore a^{p - 1} \; mod \; 1ap1mod1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值