扩展欧几里德

xiaoxiao2021-02-28  50

引理:朴素欧几里德||辗转相除法:

扩展欧几里德:

 满足裴蜀等式有解(裴蜀等式,不看的话理解为一个等式就可以了)

通解为

 为 的特解

 

接下来是证明


证明:当b=0时,

,所以有解

同理a=0

当a>b>0时

由朴素欧几里德


如果

通解

 为 的特解


递归法

typedef long long ll; ll extgcd(ll a, ll b, ll &x, ll &y) { if (b == 0) { x = 1; y = 0; return a; } ll ans = extgcd(b, a%b, x, y); ll t = x; x = y; y = t - a / b * y; return ans; }

----------------------------------

非递归

推导:

,所以初始条件,  

当r=0时r2就是gcd(a,b)

int extgcd(int a, int b, int &x, int &y) { int x1 = 1, y1 = 0, r1 = a, x2 = 0, y2 = 1, r2 = b, r, q; while (r2) { q = r1 / r2; r = r1 % r2; r1 = r2; r2 = r; x = x1 - q * x2; x1 = x2; x2 = x; y = y1 - q * y2; y1 = y2; y2 = y; } r = r1; x = x1; y = y1; return r; }

 

转载请注明原文地址: https://www.6miu.com/read-2613923.html

最新回复(0)