最小公倍数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 63333 Accepted Submission(s): 34881
Problem Description
给定两个正整数,计算这两个数的最小公倍数。
Input
输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数.
Output
对于每个测试用例,给出这两个数的最小公倍数,每个实例输出一行。
Sample Input
10 14
Sample Output
70
Source
问题链接:HDU1108 最小公倍数。
问题简述:参见上文。
问题分析:
根据欧几里德算法计算最大公约数。基于最大公约数计算最小公倍数。
程序说明:(略)
AC的C++语言程序如下:
/* HDU1108 最小公倍数 */
#include <iostream>
using namespace std;
// 非递归计算最大公约数
long gcd(long m, long n)
{
for(;;) {
if(n == 0)
return m;
long temp = m % n;
m = n;
n = temp;
}
}
// 计算最小公倍数
long lcm(long a, long b)
{
// return a * b / gcd(a, b);
return a / gcd(a, b) * b;
}
int main()
{
long n, m;
while(cin >> n >> m)
cout << lcm(n, m) << endl;
return 0;
}