欧几里得扩展算法
2017-05-21 16:36
309 查看
4000
因为 ax1+ by1 = gcd(a,b);
且 gcd(a,b) = gcd(b,a % b);
又 bx2+ (a % b)y2= gcd(b,a % b);
ax1+ by1= bx2+ (a % b)y2;
=bx2+ (a - [a / b] * b)y2//将a%b -> a-a/b*b带入
=ay2+ bx2- [a / b] * by2;
=ay2+ b(x2- [a / b] *y2);
所以 解得:x1=y2; y1=x2- [a / b] *y2;
欧几里得扩展算法
对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。int exGcd(int a,int b,int &x,int &y) { if(b==0) { x = 1;y = 0; return a; } int r = exGcd(b,a%b,x,y); int x2 = x; x = y; y = x2-a/b*y; return r; }
因为 ax1+ by1 = gcd(a,b);
且 gcd(a,b) = gcd(b,a % b);
又 bx2+ (a % b)y2= gcd(b,a % b);
ax1+ by1= bx2+ (a % b)y2;
=bx2+ (a - [a / b] * b)y2//将a%b -> a-a/b*b带入
=ay2+ bx2- [a / b] * by2;
=ay2+ b(x2- [a / b] *y2);
所以 解得:x1=y2; y1=x2- [a / b] *y2;
相关文章推荐
- 扩展欧几里得(Extended Euclid)算法求最大公约数和乘法逆元
- 欧几里得扩展算法
- [省选前题目整理][SGU 261]Discrete Roots(扩展欧几里得+中国剩余定理+原根+大步小步算法)
- 欧几里得(Euclid)算法及其扩展
- poj 1061 小白算法练习 数论 扩展欧几里得 青蛙的约会
- 欧几里得扩展算法
- 欧几里得扩展算法
- 欧几里得扩展算法
- 欧几里得算法和扩展欧几里得算法
- 扩展欧几里得算法理解
- [数论]HOJ 2185 Min Chain 扩展欧几里得算法
- 扩展欧几里得 小白算法学习
- 欧几里得扩展算法
- 欧几里得扩展算法详解及POJ1061
- 扩展欧几里得算法
- Java实现算法导论中求解模线性方程解(基于最大公约数欧几里得扩展算法)
- 欧几里得及欧几里得扩展算法
- 算法-扩展欧几里得
- 关于欧几里得及其扩展算法(C语言实现)
- 欧几里得扩展算法