nhjcacmt / acm

NHJC-ACM队信息站
6 stars 1 forks source link

欧几里得算法 #2

Open UNICKCHENG opened 6 years ago

UNICKCHENG commented 6 years ago

欧几里得算法

[任务]求两个数a,b的最大公约数 [例子]

/*利用递归*/
int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
/*调用algorithm中的函数*/
__gcd(a,b);

扩展欧几里得

[任务]求出A,B的最大公约数,且求出X,Y满足AX+BY=GCD(A,B)

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

举例推导过程

UNICKCHENG commented 6 years ago

HDU相关例题: 最小公倍数:1108 最大公约数:1722 1713 2504 小数化分数:1717 互质:2104