題目內容:求兩個正整數的最小公倍數。ios
輸入描述:輸入數據含有很少於50對的數據,每對數據由兩個正整數(0<n1,n2<100000)組成。spa
輸出描述:對於每組數據n1和n2,計算最小公倍數,每一個計算結果應單獨佔一行。code
題目分析:對於32位CPU,int的表示範圍爲-231~0~(+231-1),即-2147483648~2147483647有符號數,用最高位表示符號(1正0負)。ci
最小公倍數=X*Y/gcd(x,y);但兩數先乘會產生很大的數,可能會超過整數的表示範圍,因此,把計算順序修改一下就能夠了:最小公倍數=X/gcd(x,y)*Y。string
#include <iostream>
#include <fstream>
using
namespace
std;
int
gcd(
int
,
int
);
int
main(
int
argc,
char
* argv[])
{
int
x,y;
while
(cin>>x>>y)
{
cout<<x/gcd(x,y)*y<<endl;
}
system
(
"pause"
);
return
0;
}
int
gcd(
int
x,
int
y)
{
while
(x!=y)
{
if
(x>y) x=x-y;
else
y=y-x;
}
return
x;
}