返回目录

说明:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数

1)示例1:
输入:5 7 输出:35
2)示例2:
输入:4 6 输出:12
3)示例3:
输入:4 6 8 输出:24

Python源码

#include <stdio.h>  
  
    //获得最小公倍数  
    int doLCM(int* array,int size){  
        int x,y,num=array[0],i,gcd;  
        //去数组的第一和第二个数,计算它们的公倍数,然后再取第三个数,  
        //和之前的公倍数计算它们的公倍数,直到只有一个数。  
        for(i=0;(i+1)<size;i++){  
            x=num;  
            y=array[i+1];  
        //计算公约数   
            gcd = getGCD(x,y);  
        //计算公倍数  
        num = x/gcd * y/gcd * gcd;  
        }  
        return num;  
    }  
  
    //获取最大公约数  
    int getGCD(int a,int b){  
        int temp;  
        if(a < b){  
          temp = a;  
          a = b;  
          b = temp;  
        }  
        if(a%b == 0){  
            return b;  
        }else{  
            return getGCD(b,a%b);  
        }  
    }  
  
    int main(void){  
        int array[3] = {144,24,36};  
        int result = doLCM(array,3);  
        printf("%d\n",result);  
        return 0;  
    }  

C语言源码

#include <stdio.h>  
  
    //获得最小公倍数  
    int doLCM(int* array,int size){  
        int x,y,num=array[0],i,gcd;  
        //去数组的第一和第二个数,计算它们的公倍数,然后再取第三个数,  
        //和之前的公倍数计算它们的公倍数,直到只有一个数。  
        for(i=0;(i+1)<size;i++){  
            x=num;  
            y=array[i+1];  
        //计算公约数   
            gcd = getGCD(x,y);  
        //计算公倍数  
        num = x/gcd * y/gcd * gcd;  
        }  
        return num;  
    }  
  
    //获取最大公约数  
    int getGCD(int a,int b){  
        int temp;  
        if(a < b){  
          temp = a;  
          a = b;  
          b = temp;  
        }  
        if(a%b == 0){  
            return b;  
        }else{  
            return getGCD(b,a%b);  
        }  
    }  
  
    int main(void){  
        int array[3] = {144,24,36};  
        int result = doLCM(array,3);  
        printf("%d\n",result);  
        return 0;  
    }  

Java源码


public class Main {
    /**
     * 计算两个数的最大公约数
     */
    private static int gcd(int a, int b) {
        while (b != 0) {
            int temp = a;
            a = b;
            b = temp % b;
        }
        return a;
    }

    /**
     * 计算两个数的最小公倍数
     */
    private static int lcm(int x, int y) {
        return x / gcd(x, y) * y;
    }

    /**
     * 计算整数数组的最小公倍数
     */
    private static int doLCM(int[] array) {
        int num = array[0];
        for (int i = 1; i < array.length; i++) {
            num = lcm(num, array[i]);
        }
        return num;
    }

    /**
     * 主方法,程序入口
     */
    public static void main(String[] args) {
        int[] array = {144, 24, 36};
        int result = doLCM(array);
        System.out.println(result);
    }
}
最后修改:2024 年 04 月 18 日
如果觉得我的文章对你有用,请随意赞赏