【C语言】最大公约数与最小公倍数

相信你是最棒哒!!!


提示:以下是本篇文章正文内容,下面案例可供参考

一、是什么?

 最大公约数(GCD)  英文全称Greatest Common Divisor。

是指两个或多个整数共有约数中最大的一个。例如:

  • 12 和 18 的公约数有 1、2、3、6,其中最大的是 6,所以 GCD(12,18)=6。

最大公约数的性质:

  • 它是两个数的公共因数中最大的一个。

  • 它可以整除这两个数。

 最小公倍数(LCM)  英文全称Least Common Multiple。

是指两个或多个整数的公倍数中最小的一个。例如:

  • 12 和 18 的公倍数有 36、72、108……,其中最小的是 36,所以 LCM(12,18)=36。

最小公倍数的性质:

  • 它是两个数的公倍数中最小的一个。

  • 它可以被这两个数整除。

二、怎么求?

1.引用函数

程序分为两部分:

  1. 计算最大公约数(GCD)

    int gcd(int a, int b) {
        while (b != 0) {
            int temp = b;
            b = a % b;
            a = temp;
        }
        return a; // 当 b 为 0 时,a 就是最大公约数
    }
  2. 计算最小公倍数(LCM)

    int lcm(int a, int b, int gcd_value) {
        return (a * b) / gcd_value; // 使用公式 LCM = (a * b) / GCD
    }
  3. 主函数

    int main() {
        int a = 2024;
        int b = 1024;
        int gcd_value = gcd(a, b); // 计算最大公约数
        int lcm_value = lcm(a, b, gcd_value); // 计算最小公倍数
        printf("2024 和 1024 的最大公约数是: %d\n", gcd_value);
        printf("2024 和 1024 的最小公倍数是: %d\n", lcm_value);
        return 0;
    }
运行程序的结果

运行程序后,输出结果是:

2024 和 1024 的最大公约数是: 16
2024 和 1024 的最小公倍数是: 126464

验证:

  • 2024×1024=2072320

  • GCD(2024,1024)=16

  • LCM(2024,1024)=162072320​=126464

2.直接求

#include<stdio.h>  

int main()  
{
    int a, b, t, m, n;  
    // a 和 b 用于计算 GCD,m 和 n 用于存储原始输入值,t 用于临时存储
    scanf("%d%d", &a, &b);  
    m = a;  
    n = b;  // 用于后续计算 LCM

    // 使用欧几里得算法计算最大公约数(GCD)
    while (b != 0)  
    {
        t = b;  
        b = a % b;  
        a = t;  
    }

    // 此时 a 的值就是最大公约数(GCD)
    // 最小公倍数(LCM)可以通过公式 LCM = (m * n) / GCD 计算

    printf("%d %d\n", a, m * n / a);  // 输出最大公约数和最小公倍数
    return 0;  // 程序结束,返回 0 表示正常退出
}
#include<stdio.h>
int main()
{
	int a, b, t, m, n;
	scanf("%d%d", &a, &b);
	m = a;
	n = b;
	while (b != 0)
	{
		t = b;
		b = a % b;
		a = t;
	}
	printf("%d %d\n", a, m * n / a);
	return 0;
}

 


总结

总结

  • 最大公约数(GCD) 是两个数的公共因数中最大的一个。

  • 最小公倍数(LCM) 是两个数的公倍数中最小的一个。

  • 它们之间的关系是:

    LCM(a,b)=GCD(a,b)a×b​
  • 这个公式反映了两个数的公共部分(GCD)和完整部分(LCM)之间的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值