扩展欧几里得就是欧几里得的扩展,先说说欧几里得算法吧
def gcd(a,b):
if b == 0:
return a
else:
return gcd(b,a%b)
这段代码想必大家在熟悉不过了吧,,但是有没有想过为什么gcd(a,b)=gcd(b,a%b)?
定义一下符号:
( x , y ) = g c d ( x , y ) a = : b q + r g : = ( a , b ) k : = ( b , r ) (x,y)=gcd(x,y)\\ a=:bq+r\\ g:=(a,b)\\ k:=(b,r)\\ (x,y)=gcd(x,y)a=:bq+rg:=(a,b)k:=(b,r)
证明:
( b q + r , b ) = g ⇒ g ∣ ( b q + r ) ∵ g ∣ b ⇒ g ∣ b q ∴ g ∣ b q + r − b q ⇒ g ∣ r ⇒ g ∣