gcd与exgcd(裴蜀定理)

本文详细介绍了欧几里得算法(gcd)及其扩展版exgcd,证明了gcd(a,b)=gcd(b,a%b),并结合裴蜀定理探讨了ax+by=c的整数解条件。内容涵盖算法原理、证明过程以及求解方法,强调理解的重要性而非单纯背诵代码。" 100743063,9049214,Axure教程:音乐播放器进度条与唱片旋转实现,"['Axure', '原型设计', 'UI设计', '交互设计']
摘要由CSDN通过智能技术生成

gcd(欧几里得算法)与最大公因数

  1. 公式: g c d ( a , b ) = g c d ( b , a gcd(a,b)=gcd(b,a gcd(a,b)=gcd(b,a%b ) ) )

  2. 证明:
    a > b a>b a>b,证明 a , b a,b a,b的公因数和 b , a − b b,a-b b,ab的公因数是同样的一堆数
    首先,有结论:若 x ∣ a , x ∣ b , 那么 x ∣ ( a − b ) x|a,x|b,那么x|(a-b) xa,xb,那么x(ab).
    a a a b b b的公因子集合为 S 1 S1 S1 b b b ( a – b ) (a – b) (ab)的公因子集合为 S 2 S2 S2。那么,
    对于任意的 x ∈ S 1 x∈S1 xS1,有 x ∣ a x|a xa,且 x ∣ b x|b xb,所以 x ∣ ( a – b ) x|(a – b) x(ab),则 x x x ∈ \in S2 ,于是 ,于是 ,于是S1$ ⊂ \subset S 2 S2 S2
    对于任意的 x ∈ S 2 x∈S2 xS2,有 x ∣ b x|b xb,且 x ∣ ( a – b ) x|(a – b) x(ab),所以 x ∣ a x|a xa,则 x ∈ S 1 x∈S1 xS1,于是 S 2 S2 S2 ⊂ \subset S 1 S1 S1
    所以 S 1 = S 2 S1=S2 S1=S2 g c d ( a , b ) = m a x ( S 1 ) = m a x ( S 2 ) = g c d ( b , a – b ) gcd(a, b) = max(S1) = max(S2) = gcd(b, a – b) gcd(a,b)=max(S1)=max(S2)=gcd(b,ab)
    证明了 g c d ( a , b ) = g c d ( b , a – b ) gcd(a, b) = gcd(b, a – b) gcd(a,b)=gcd(b,ab),也就可以进一步证明 g c d ( a , b ) = g c d ( b , a m o d b ) gcd(a, b) = gcd(b, a mod b) gcd(a,b)=gcd(b,amodb)

  3. 代码:

#define ll long long
ll gcd(ll a,ll b)
{
	if(b==0)return a;
	else rteutn gcd(b,a%b);
}
  1. 复杂度: O ( l o g 2 m a x ( a , b ) ) O(log_2max(a,b)) O(log2max(a,b))

exgcd(扩展欧几里得算法)

  1. 前置知识:裴蜀定理 q w q qwq qwq
    (1) 对任何 a , b ∈ Z a,b∈Z a,bZ和它们的最大公约数 d d d,关于未知数 x x x y y y的线性不定方程(称为裴蜀等式): a x + b y = c ax+by=c ax+by=c有整数解 ( x , y ) (x,y) (x,y)当且仅当 d ∣ c d∣c dc,可知有无穷多解。特别地,一定存在整数 x x x, y y

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值