C++求最小公倍數


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

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

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

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

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

 

#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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM