下面分别介绍C语言中求最大公约数和最小公倍数的方法。
求最大公约数
最大公约数(Greatest Common Divisor,简称GCD),指两个或多个整数共有约数中最大的一个。可以使用辗转相除法求解,C语言代码如下:
#include <stdio.h> int gcd(int a, int b) { if (b == 0) { return a; } else { return gcd(b, a % b); } } int main() { int a = 12, b = 18; int result = gcd(a, b); printf("最大公约数为:%d\n", result); return 0; }
上述代码中,定义了一个gcd
函数,用于求解两个数的最大公约数。如果b
等于0,则返回a
,否则递归调用gcd
函数,传入参数b
和a%b
,直到b
等于0时返回结果。在main
函数中,调用gcd
函数,求解12和18的最大公约数,并输出结果。
求最小公倍数
最小公倍数(Least Common Multiple,简称LCM),指两个或多个整数公有的倍数中最小的一个。最小公倍数等于两个数的乘积除以它们的最大公约数。因此,可以使用上述求最大公约数的gcd
函数来求解最小公倍数,C语言代码如下:
#include <stdio.h> int gcd(int a, int b) { if (b == 0) { return a; } else { return gcd(b, a % b); } } int lcm(int a, int b) { return a * b / gcd(a, b); } int main() { int a = 12, b = 18; int result = lcm(a, b); printf("最小公倍数为:%d\n", result); return 0; }
上述代码中,定义了一个lcm
函数,用于求解两个数的最小公倍数。在lcm
函数中,调用gcd
函数求解两个数的最大公约数,并将两个数的乘积除以最大公约数即可得到最小公倍数。在main
函数中,调用lcm
函数,求解12和18的最小公倍数,并输出结果。
评论