首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C中的编译时LCM/GCD

在C语言中,可以使用以下方法计算两个整数的最大公约数(GCD)和最小公倍数(LCM)

  1. 最大公约数(GCD): 最大公约数可以使用辗转相除法(欧几里得算法)来计算。辗转相除法是一种递归算法,当两个整数a和b(假设a > b)的最大公约数为c时,a和b可以表示为:

a = k1 * c b = k2 * c

其中k1和k2为整数。

辗转相除法的步骤如下:

  • 如果b等于0,则最大公约数为a。
  • 否则,从a中减去b得到新的a(或者直接计算a除以b的余数),然后使用新的a和b重复步骤1。

以下是C语言实现的计算最大公约数的函数:

代码语言:javascript
复制
#include <stdio.h>

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

int main() {
    int num1 = 56;
    int num2 = 98;
    printf("GCD of %d and %d is: %d\n", num1, num2, gcd(num1, num2));
    return 0;
}
  1. 最小公倍数(LCM): 最小公倍数可以通过以下公式计算:

LCM(a, b) = (a * b) / GCD(a, b)

以下是C语言实现的计算最小公倍数的函数:

代码语言:javascript
复制
#include <stdio.h>

int gcd(int a, int b);
int lcm(int a, int b);

int main() {
    int num1 = 56;
    int num2 = 98;
    printf("LCM of %d and %d is: %d\n", num1, num2, lcm(num1, num2));
    return 0;
}

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);
}
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券