问题描述
编写一函数lcm,求两个正整数的最小公倍数。
样例输入
一个满足题目要求的输入范例。
例:
样例输入
3 5
样例输出
15
数据规模和约定
输入数据中每一个数的范围。
例:两个数都小于65536。
思路:
思路:最小公倍数 = 两数之积 / 最大公约数
最大公约数可以用辗转相除法
辗转相除法:给出两个自然数 a 和 b:检查 b 是否为0;如果是,则 a 为最大公约数。如果不是,则分别用 b 和 a 除 b 的余数作为上一步中的 a 和 b 重复这一检查步骤
int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a % b);
}
#include<iostream>
using namespace std;
int f(int n,int m)
{
return m==0 ? n:f(m,n%m);
}
int main()
{
int n,m;
cin>>n>>m;
cout<<n*m/f(n,m);
return 0;
}