求多个数的最小公倍数

#include <stdio.h> 
//获取最大公约数 
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 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 main(void){ 
int n;
    while(scanf("%d",&n)!=EOF){
        int i,j; 
        for(i=0;i<n;i++){
            int t;
            scanf("%d",&t);
            int array[t];
            for(j=0;j<t;j++){
             
            scanf("%d",&array[j]);
             
        }       
            int result = doLCM(array,t); 
            printf("%d\n",result); 
        }
    }
    return 0; 
}
posted @ 2018-12-25 16:41  菜鸟求大佬  阅读(214)  评论(0编辑  收藏  举报