Vision_MATH_(扩展)欧几里得

来源:互联网 发布:windows dvd 播放器 编辑:程序博客网 时间:2024/05/21 10:53
///定义:
/*
    扩展欧几里德算法是用来在已知a, b求解一组x,y,
使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,
根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及
方程组中。
*/

///代码:

/***name:欧几里得算法(辗转相除法)**functuion:求gcd(a,b)*/int gcd(int a,int b){    return b==0?a:gcd(b,a%b);}
/***name:扩展欧几里得算法**functuion:存在整数x,y使得gcd(a,b) = ax+by,求其中一组解x0,y0*/int t,p,c;///t = x0,p = y0,c = gcd(a,b)void extend_euild(int a,int b){    if(b==0){        t = 1;        p = 0;        c = a;    }    else {        extend_euild(b,a%b);        int temp = t;        t = p;        p = temp-a/b*p;    }}


///扩展:


/*
    (1)通解:x = x0+(b/gcd)*t;
             y = y0-(a/gcd)*t;
    (2)应用:
            *求解不定方程
            *求解模线性方程
            *求解模的逆元(a有逆元的充要条件:gcd(a,mod)==1)
*/



原创粉丝点击