C语言 | 您所在的位置:网站首页 › 递归法求最大公约数c语言代码 › C语言 |
求最小公倍数,其实还是求最大公约数,即,先求两个数的最大公约数,在用这两个数的乘积除以最大公约数就是最小公倍数, 数学算式表示为: 两个数 a,b, 最小公倍数=(a*b)/这两个数的最大公约数 代码实现 这段代码实现了使用欧几里德算法递归求解两个数的最小公倍数。让我们一起分析一下代码。 gcd 函数实现了欧几里德算法,通过递归调用自身来计算两个数的最大公约数。如果其中一个数为 0,则另一个数就是最大公约数;否则,继续递归调用 gcd 函数。 lcm 函数利用 gcd 函数计算出的最大公约数来计算最小公倍数。公式为 (a * b) / gcd(a, b)。 在 main 函数中,首先打印提示用户输入两个整数的消息,然后使用 scanf 函数获取用户输入的两个整数。接着调用 lcm 函数计算最小公倍数,并使用 printf 函数输出结果。 总体而言,这段代码使用了递归实现了欧几里德算法来计算最小公倍数,并在 main 函数中演示了它的使用。 #include // 计算最大公约数 int gcd(int a, int b) { if (b == 0) { return a; } return gcd(b, a % b); } // 计算最小公倍数 int lcm(int a, int b) { int greatestCommonDivisor = gcd(a, b); return (a * b) / greatestCommonDivisor; } int main() { int num1, num2; printf("请输入两个整数:\n"); scanf("%d %d", &num1, &num2); int result = lcm(num1, num2); printf("最小公倍数是:%d\n", result); return 0; }可以参考博客:C语言——欧几里德算法求最大公约数——的递归实现方式-CSDN博客 这段代码可以分为三个部分进行分块分析,分别是: gcd 函数的递归实现: int gcd(int a, int b) { if (b == 0) { return a; } return gcd(b, a % b); }这部分代码是欧几里德算法的递归实现。它首先检查 b 是否等于 0,如果是,返回 a。否则,递归调用 gcd 函数,传入 b 和 a 除以 b 的余数 a % b。递归的终止条件是 b 等于 0,此时最大公约数就是 a。 lcm 函数的计算最小公倍数实现: int lcm(int a, int b) { int greatestCommonDivisor = gcd(a, b); return (a * b) / greatestCommonDivisor; }这部分代码利用 gcd 函数计算出的最大公约数来计算最小公倍数。它首先调用 gcd 函数,将结果存储在 greatestCommonDivisor 变量中。然后通过 (a * b) / greatestCommonDivisor 计算最小公倍数,并将结果返回。 main 函数的用户输入和输出: int main() { int num1, num2; printf("请输入两个整数:\n"); scanf("%d %d", &num1, &num2); int result = lcm(num1, num2); printf("最小公倍数是:%d\n", result); return 0; }这部分代码包含用户输入和输出。它首先使用 printf 函数打印提示用户输入两个整数的消息。然后使用 scanf 函数获取用户输入的两个整数,分别存储在 num1 和 num2 变量中。接下来调用 lcm 函数计算最小公倍数,并将结果存储在 result 变量中。最后使用 printf 函数输出最小公倍数的结果。 通过分块分析,可以更好地理解代码的结构和实现逻辑,以及各个部分之间的关系。 |
CopyRight 2018-2019 实验室设备网 版权所有 |