首页 > 解决方案 > 扩展欧几里得算法约定 [In C]

问题描述

我一直在寻找一种Extended Euclidean算法C。我找到了以下一段代码:

int gcdExtended(int a, int b, int *x, int *y) 
{ 
    if (a == 0) 
    { 
        *x = 0; 
        *y = 1; 
        return b; 
    } 
    int x1, y1;
    int gcd = gcdExtended(b%a, a, &x1, &y1); 
    *x = y1 - (b/a) * x1; 
    *y = x1;
    return gcd; 
}

所以gcdExtended(0,0)它会返回:x=0y=1。但我看到了一些其他版本的算法,它们返回x=0y=0. 两者在数学上都是正确的。但是,这个问题有约定吗?

标签: cgreatest-common-divisor

解决方案


推荐阅读