拓展欧几里得算法详解
欧几里得算法
一般形式
g c d ( a , b ) = g c d ( a m o d b , b ) gcd(a,b)=gcd(a \bmod b,b) gcd(a,b)=gcd(amodb,b)
证明
因为 g c d ( a , b ) = g c d ( b , a − b ) gcd(a,b)=gcd(b,a-b) gcd(a,b)=gcd(b,a−b),所以可以简化减法
运算为模
运算。
即 g c d ( a , b ) = g c d ( b , a m o d b ) gcd(a,b)=gcd(b,a \bmod b) gcd(a,b)=gcd(b,amodb)。
code
inline int gcd (register const int x, register const int y)
{
return y == 0 ? x : gcd (y, x % y);
}
主要步骤
拓展欧几里得算法主要用来求一个形如 a x + b y =