gpt4 book ai didi

c - Knuth 的《编程艺术》第三版和欧几里得算法示例

转载 作者:行者123 更新时间:2023-11-30 21:18:00 26 4
gpt4 key购买 nike

我刚刚开始阅读 Knuth 的《编程艺术》第一卷,并阅读了第 4 页上他描述欧几里得算法的部分。他阐述了求两个数的最大公约数的步骤。您可以在这里阅读更多相关信息 https://en.wikipedia.org/wiki/Euclidean_algorithm

他逐步介绍了一个求 199 和 544 的 GCD 的示例,他将 17 作为答案。我很快就实现了该算法,只是为了跟进,但得到了答案 1。使用我的计算器,我也得到了答案 1。

我的代码是。

#import <math.h>
#import <stdio.h>

double GreatestComminDivisor(int m, int n) {

double r = fmod(m, n);
if (m < n) {
int temp = n;
n = m;
m = temp;
}

while (r != 0) {
r = fmod(m, n);

if (r == 0) {
return n;
}

m = n;
n = r;
}

return n;
}

int main(int argc, char const *argv[]) {

int m = 199;
int n = 544;
double answer = GreatestComminDivisor(m, n);

printf("GCD of %i and %i is %f \n", m, n, answer);

return 0;
}

我在他的例子中遗漏了一些东西吗?他的答案是否错误?我试图查找该书第三版的勘误表,但没有得到任何结果。只是想确保我不会发疯。

最佳答案

这是 GCD 函数的示例

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

数字是 119 和 544。

关于c - Knuth 的《编程艺术》第三版和欧几里得算法示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32065110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com