1065. 最小公倍数

题目描述

输入正整数n,m,编写程序计算n和m的最小公倍数。

输入

一行两个空格隔开的正整数n,m。

输出

输出n和m的最小公倍数。

样例输入

12 18

样例输出

36

数据范围限制

1<=n,m<=10^6

思路:
本题较简单,有两种解法,一种是最简单的暴力解法,从1枚举到n*m,判断是否是最小公倍数;第二种则是应用欧几里得算法,先求出最大公约数,最小公倍数则为n / 最大公约数 * m / 最大公约数 * 最大公约数。

代码如下:
代码一(暴力解法):

#include<bits/stdc++.h>
using namespace std;
int main() {
    long long m,n;
    long long a;
    cin>>n>>m;
    for(long long i=1;i<=m*n;i++){
        if(i%n==0&&i%m==0){
            cout<<i;
            break;
        }
    }
    return 0;
}

代码二(欧几里得算法):

#include<bits/stdc++.h>
using namespace std;
long long gcd(long long n,long long m){
    if(m==0) return n;
    return gcd(m,n%m);
}

int main(){
    long long n,m;
    cin>>n>>m;
    cout<<n/gcd(n,m)*m;     //cout<<n/gcd(n,m)*m/gcd(n,m)*gcd(n,m)
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_19656301/article/details/82119067