C++求最小公倍數

題目內容:求兩個正整數的最小公倍數。ios

輸入描述:輸入數據含有很少於50對的數據,每對數據由兩個正整數(0<n1,n2<100000)組成。spa

輸出描述:對於每組數據n1和n2,計算最小公倍數,每一個計算結果應單獨佔一行。code

題目分析:對於32CPUint的表示範圍爲-231~0~(+231-1),即-2147483648~2147483647有符號數,用最高位表示符號(10負)。ci

最小公倍數=X*Y/gcd(x,y);但兩數先乘會產生很大的數,可能會超過整數的表示範圍,因此,把計算順序修改一下就能夠了:最小公倍數=X/gcd(x,y)*Ystring

 

#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;
}
相關文章
相關標籤/搜索