【C语言】最大公约数和最小公倍数递归-最大公约数(GCD)
最编程
2024-08-12 08:48:22
...
int gcd(int a, int b)
{
return a % b ? gcd(b, a % b) : b;
}
用辗转相除法求最大公约数,用递归写的代码会比循环简洁一些。
先判断a除以b的余数是否为0。
a % b ?
不为0的话,则继续用被除数作为除数,用上一步的余数作为除数继续运算。
a % b ? gcd(b , a%b)
是0的话则b就位两数的最大公约数,则返回b。
a % b ? gcd(b , a%b): b
注 : 这里不用考虑a 和 b的大小。如果a 小于 b, a%b 就等于 a ,则调用gcd (b, a % b)就等同于调用 gcd (b, a) , 所以无需判断是否交换。
上一篇: C语言中的递归探讨(中级)
下一篇: 使用递归计算C语言中一个数的每位之和
推荐阅读
-
【C语言】最大公约数和最小公倍数递归-最大公约数(GCD)
-
使用C语言和while循环,计算两个正整数m和n的最大公约数和最小公倍数
-
密码学中的简单数论注释(2):最大公约数、扩展欧几里得算法和最小公倍数
-
[C] 输入两个正整数 m 和 n,求它们的最大公约数和最小公倍数。(要求用 while 语句实现。
-
C 语言程序设计(翁凯老师) C M 2019 年秋季 C 语言入门和高级练习集 7 - 26 最大公倍数和最小公倍数 - 输出示例。
-
[Python] 第 4-10 章 最大公约数和最小公倍数(15 分)
-
7-3 SDUT-loop-5-hundred-money-for-a-hundred-chickens&&7-4 SDUT-最大公约数和最小公倍数
-
最大公约数和最小公倍数及其应用(Go 语言解决方案)
-
Java程序求最大公约数和最小公倍数