C++ 二元一次不定方程巧妙求解——运用扩展欧几里得算法
前言
在关于数论的学习中,求解二元一次不定方程是很重要的,在学习求解二元一次不定方程之前,要先了解欧几里得算法和扩展欧几里得算法。
关于数论的学习
欧几里得算法
欧几里得算法就是辗转相除法,欧几里得算法中 ( x , y ) 的最大公约数与 ( y , x mod y ) 的最大公约数相同。
证明:设 y = k*x+b ,则 b = y % x
设 d 是 ( x ,y ) 的公约数
则 d 能整除 x 和 y ,因为 b = y - k*x = a1*d - k*a2*d = d*( a1-k*a2 )
所以 d 也能整除 b
所以 ( x , y ) 的最大公约数与 ( y , x%y ) 的最大公因数相同
扩展欧几里得算法
对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然
存在两个整数 x,y ,使得 gcd(a&#x