c - 扩展欧几里得算法约定 [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=0
和y=1
。但我看到了一些其他版本的算法,它们返回x=0
和y=0
. 两者在数学上都是正确的。但是,这个问题有约定吗?
解决方案
推荐阅读
- image - 检索给定分辨率和中心点的图像的角坐标
- python - 从具有特定 len 的文件单词中提取
- django - Google App Engine 为 ... 记录了一堆新连接,并且客户端关闭了本地连接
- azure - 将文件夹从本地计算机传输到 Azure VM
- javascript - 未捕获:类型错误
- ember.js - Ember:离开路线时自动销毁未提交的新模型实例
- ruby-on-rails - 我在哪里可以更改我的 Ruby gems 目录路径
- swift - 为什么 FileHandle 不一致地返回“nil”
- r - R - 创建一列字符矩阵
- batch-file - 批处理文件:从文本文件中合并同名文本文件