标签:
定理:对不全为0的数a,b,存在整数x,y使得 ax+by=gcd(a,b)
可使用扩展欧几里得算法来求解x,y
/扩展欧几里德算法,求解ax+by=gcd(a,b)系数 void extendEuclid(int a, int b, int &d, int &x, int&y){ if (!b){ d = a; x = 1; y = 0; } else{ extendEuclid(b, a%b, d, y, x); y -= x*(a / b); } }
1.求解二元不定方程 ax+by=n
结论:方程有解得充分必要条件是gcd(a,b)|n.若(x0,y0)是方程的一组解,则方程全部解可以表示为:x=x0+b*k,y=y0-a*k, (k为任意整数)
//求ax+by=n的一个解 int solveLiner(int a, int b, int n,int&x,int&y){ int d; extendEuclid(a, b, d, x, y); if (n%d)return 0; //无解 x = (n / d)*x; y = (n / d)*y; return 1; }
2求解模线性方程 ax≡b(mod n)
首先解释 a≡b(mod n)的含义是:a和b关于n同余,即 a mod n= b mod n;充要条件是n|(a-b)
标签:
原文地址:http://www.cnblogs.com/td15980891505/p/5800404.html