求两个整数的最小公倍数

两个整数的最小公倍数是它们的公共倍数中最小的一个数。要求最小公倍数,可以使用以下原理:

  1. 分解质因数:将这两个整数分解质因数,分别写成素数的乘积形式。

  2. 取出公共因子:找出这两个整数各自的质因数中的公共因子,并将其相乘。

  3. 取出非公共因子:把剩下的质因数分别乘上去。

  4. 相乘:把步骤2和步骤3得到的结果相乘即为最小公倍数。

例如,求6和12的最小公倍数:

6 = 2 × 3

12 = 2 × 2 × 3

步骤1:将6和12分解质因数,得到6 = 2 × 3,12 = 2 × 2 × 3。

步骤2:它们的公共因子是2和3。

步骤3:6的非公共因子是3,12的非公共因子是2 × 2。

步骤4:将步骤2和步骤3得到的结果相乘,即2 × 3 × 2 × 2 = 24。

因此,6和12的最小公倍数是24。

在这里插入图片描述

一、C 实现求两个整数的最小公倍数及代码详解

最小公倍数(LCM)是指两个或多个整数所公有的倍数中最小的一个。

例如,4和6的最小公倍数是12,因为12既是4的倍数又是6的倍数,且没有比12小的同时是4和6的倍数的数。

代码实现:

#include <stdio.h>

//函数声明
int gcd(int a, int b);
int lcm(int a, int b);

int main()
{
    
    
    int a, b;
    printf("请输入两个正整数:");
    scanf("%d %d", &a, &b);
    printf("最小公倍数为:%d\n", lcm(a, b));
    return 0;
}

//求最大公约数
int gcd(int a, int b){
    
    
    if(b == 0)
        return a;
    return gcd(b, a % b);
}

//求最小公倍数
int lcm(int a, int b){
    
    
    return a * b / gcd(a, b);
}

代码详解:

  1. 在主函数中,输入要求的两个正整数,并调用lcm函数输出最小公倍数。
  2. gcd函数用于求两个数的最大公约数,在lcm函数中会被调用。
  3. lcm函数通过求得两个数的最大公约数,运用公式 a * b / gcd(a, b)计算最小公倍数,并返回结果。

执行结果:

请输入两个正整数:12 18
最小公倍数为:36

在这里插入图片描述

二、C++ 实现求两个整数的最小公倍数及代码详解

最小公倍数(LCM)是指两个或多个整数公有的倍数中最小的一个。下面是C++代码实现求两个整数的最小公倍数。

#include <iostream>
using namespace std;

int gcd(int a, int b) //辗转相除法求最大公约数
{
    return (b == 0) ? a : gcd(b, a % b);
}

int lcm(int a, int b) //最小公倍数
{
    return a * b / gcd(a, b);
}

int main()
{
    int a, b;
    cout << "请输入两个正整数:";
    cin >> a >> b;
    cout << "它们的最小公倍数为:" << lcm(a, b) << endl;
    return 0;
}

其中,gcd()函数使用了辗转相除法求最大公约数,lcm()函数则是直接根据公式求出最小公倍数。在main()函数中,从控制台输入两个正整数,然后调用lcm()函数输出它们的最小公倍数。

代码详解:

  1. gcd()函数:参数为两个正整数a,b。如果b为0,那么gcd(a,b)就是a;否则gcd(a,b)就等于gcd(b,a%b)。
  2. lcm()函数:参数为两个正整数a,b。首先求出a,b的最大公约数gcd,然后使用公式lcm = a * b / gcd计算最小公倍数。
  3. main()函数:从控制台输入两个正整数a,b。调用lcm()函数计算最小公倍数,并输出到控制台。

以上便是求两个整数最小公倍数的C++代码实现。

三、Java 实现求两个整数的最小公倍数及代码详解

最小公倍数即为两个数的乘积除以它们的最大公约数,因此我们需要先实现求最大公约数的函数,然后再通过它来求最小公倍数。

代码如下:

public class LCM {
    
    
    // 求最大公约数
    public static int gcd(int a, int b) {
    
    
        if (b == 0) {
    
    
            return a;
        } else {
    
    
            return gcd(b, a % b);
        }
    }

    // 求最小公倍数
    public static int lcm(int a, int b) {
    
    
        return a * b / gcd(a, b);
    }

    public static void main(String[] args) {
    
    
        int a = 12;
        int b = 18;
        int res = lcm(a, b);
        System.out.println("最小公倍数为:" + res);
    }
}

首先我们定义了一个求最大公约数的函数 gcd,它使用了递归的方法,不断将较大的数取模成较小的数,直到余数为 0,此时较小的数即为最大公约数。

然后我们定义了一个求最小公倍数的函数 lcm,它直接调用 gcd 函数求出最大公约数,再通过两数乘积除以最大公约数得到最小公倍数。

最后在 main 函数中我们给定了两个整数 ab,调用 lcm 函数求出它们的最小公倍数,并输出结果。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47225948/article/details/133124839