ACM模板——最大公约数

int gcd(int a,int b)
{
    return b == 0? a : gcd(b,a%b);
}
欧几里得辗转相除法
//返回最大公约数 
//ax+by=gcd(a,b),求x,y
int exgcd(int a,int b,int &x,int &y)
{
    int d = a;
    if(b != 0)
    {
        d = exgcd(b,a%b,y,x);
        y -= (a/b) * x;
    }
    else{x = 1;y = 0;}
    return d;
}
扩展欧几里得
 1 int gcd(int a,int b)
 2  {
 3      while(!(a==b))
 4      {
 5          if(a>b)
 6              a = a-b;
 7          else
 8              b = b-a;
 9      }    
10      return a;
11 }
辗转相减法

 

posted @ 2019-03-26 12:02  Asurudo  阅读(291)  评论(0编辑  收藏  举报