最大公约数和最小公倍数求法 C++

来源:互联网 发布:净水器 储水桶 知乎 编辑:程序博客网 时间:2024/06/06 02:52

//******************************更简洁的写法?********************************

//**********************写法很多,但是希望越简洁越好,代码越少越好************************

//************************BY WangKe.Automation.WUST.2012.10***********************
#include<iostream>
using namespace std;

void GetGCD(int numa, int numb)
{
 int divisor = 2;   //动态除数
 int gcd = 1;    //最大公约数结果

 while( (numa >= divisor) && (numb >= divisor) )  //最大公约数
 {
  if( ( numa%divisor == 0 ) && ( numb%divisor == 0 ) )
  {
   gcd = divisor;   
  }
  
  divisor++;
 }

 cout<<"The greatest common divisor is "<<gcd<<endl;
}

void GetLCM(int numa, int numb)

 int lcm = 1;      //最小公倍数结果

 lcm = numa>=numb?numa:numb;   //最小公倍数
 
 while ( !( lcm%numb == 0 && lcm%numa == 0 ) )
 {
  lcm++;
 }
  
 cout<<"The least common multiple is "<<lcm<<endl;
}

int main()

 int num1 = 0, num2 = 0;  //输入数字

 while(1)
 {  
  cin>>num1;
  cin>>num2;
  GetGCD(num1, num2);
  GetLCM(num1, num2);
 }

 return 0;
}