1065. 最小公倍数
题目描述
输入正整数n,m,编写程序计算n和m的最小公倍数。
输入
一行两个空格隔开的正整数n,m。
输出
输出n和m的最小公倍数。
样例输入
12 18
样例输出
36
数据范围限制
1<=n,m<=106
C++代码
#include <iostream>
#include <cassert>
#include <algorithm>
using namespace std;
#ifdef UNIT_TEST
int gcd(int n, int m) // Greatest Common Divisor(GCD)
{
if (0 == m)
{
return n;
}
else
{
return gcd(m, n%m);
}
}
#else
int gcd(int n, int m) // Greatest Common Divisor(GCD)
{
int d; // common divisor
for(d=min(n,m); d>0; d--)
{
if (n%d == 0 && m%d == 0)
{
break;
}
}
return d;
}
#endif
long long lcm(int n, int m) // Least Common Multiple (LCM)
{
long long tmp = n;
tmp /= gcd(n, m);
tmp *= m; // tmp = n*m/gcd(n, m)
return tmp;
}
int main()
{
const int max_num = 1000000;
int n, m;
cin >> n >> m;
assert(n>=1 && n<=max_num);
assert(m>=1 && m<=max_num);
cout << lcm(n, m) << endl;
return 0;
}