码迷,mamicode.com
首页 > 其他好文 > 详细

扩展欧几里得解不定方程

时间:2016-07-24 10:33:10      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

LL gcd(LL a,LL b){
    if(b==0) return a;
    else return gcd(b,a%b);
}

LL ex_gcd(LL a,LL b,LL &x,LL &y){
    if(b==0){
        x=1;y=0;
        return a;
    }
    LL r=ex_gcd(b,a%b,x,y);
    LL t=x;
    x=y;
    y=t-a/b*y;
    return r;
}

//求解ax+by=c的解x,y x,y需要提前定义
bool linear_equation(LL a,LL b,LL c,LL &x,LL &y)
{
    LL d=ex_gcd(a,b,x,y);
    if(c%d!=0)   //即不整除
        return false;
    LL k=c/d;
    x*=k; y*=k;    //求得的只是其中一组解,另外的解是:x+b/gcd(a,b)*i y-a/gcd(a,b)*i
    return true;
}

 

扩展欧几里得解不定方程

标签:

原文地址:http://www.cnblogs.com/weeping/p/5700110.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!