拓展欧几里得定理

Posted hanasaki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拓展欧几里得定理相关的知识,希望对你有一定的参考价值。

void gcd(int a, int b, int &d, int &x, int &y) 
    if(!b) d = a, x = 1, y = 0;
    else gcd(b, a%b, d, y, x), y -= x * (a / b);

 

假设 ax1+by1=gcd(a,b) (方程一) bx2+(a%b)y2=gcd(b,a%b)(方程二)
由欧几里得算法gcd(a,b)=gcd(b,a%b) 得到 ax1+by1=bx2+(a%b)y2
即ax1+by1=bx2+(a-a/b*b)y2 => ax1+by1=ay2+b(x2-a/b*y2) 最后可以得到 x1=y2; y1=x2-a/b*y2

以上是关于拓展欧几里得定理的主要内容,如果未能解决你的问题,请参考以下文章

理论: 数论:拓展欧几里得算法及其证明

拓展欧几里得

扩展欧几里得定理总结

(转)拓展欧几里得讲解

蓝桥集训之数论基础

求逆元