算法笔记 最小公倍数

思路

  • 每输入一个数时,和现有的最小公倍数一起求目前的最小公倍数
  • 输入的第一个数最小公倍数即为其本身
  • 最小公倍数=(a/最大公约数)*b
  • 注意不要使用a*b/最大公约数,避免溢出

代码

#include <stdio.h>
#include <iostream>
using namespace std;

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

int main(){
    
    
    int n=0;
    while(scanf("%d",&n)!=EOF){
    
    
        while(n--){
    
    
            int m=0;
            scanf("%d",&m);
            int a=0,b=0;
            for(int i=0;i<m;i++){
    
    
                if(i==0){
    
    
                    scanf("%d",&a);
                    continue;
                }
                else{
    
    
                    scanf("%d",&b);
                    int gcdab=gcd(a,b);
                    a=a/gcdab*b;//避免溢出
                    continue;
                }
            }
            printf("%d\n",a);
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Cindy_00/article/details/108690377