C++题解:多个数的最小公倍数

  目录

题目 

题解


题目 

求 n 个数的最小公倍数。

输入格式

第一行一个整数 n (2≤n≤20)。

第二行 n 个整数。

输出格式

一个整数,表示最小公倍数,数据保证答案不超过int范围。

输出时每行末尾的多余空格,不影响答案正确性

要求使用「文件输入输出」的方式解题,输入文件为 lcm.in,输出文件为 lcm.out

样例输入

5
2 4 6 8 10

样例输出

120

题解:

知识点:数学

分析:题目比较简单,需要运用公式(a,b)×[a,b]=ab以及欧几里得算法,其实C++有个叫__gcd( , )的函数,可自动求最大公约数

代码:

#include
#include
#include
using namespace std;
int gcd(int a,int b){//欧几里得算法,即辗转相除法,
    if (b==0){
        return a;
    }
    return gcd(b,a%b);
}
int main(){
    freopen("lcm.in","r",stdin);
    freopen("lcm.out","w",stdout);
    int n,x=1,a;//注意要初始化x,x即答案
    scanf("%d",&n);
    while (n--){
        scanf("%d",&a);
        x=x/gcd(max(a,x),min(a,x))*a;//注意写法,不然爆int
    }
    printf("%d",x);
    return 0;
}

你可能感兴趣的:(C++简单题,c++,数学,数论)