欧几里得算法求两个数的最大公约数

时间:2022-09-08 09:46:32

求解最大公约数的欧几里德算法,用户输入两个任意正整数,程序输出他们的最大公约数。算法如下:

步骤1      如果p < q,则交换pq

步骤2      rp /q 的余数。

步骤3      如果r = 0,则令g =q并终止;

否则令p = q, q =r并转向步骤2

 

测试代码如下:

int p = 0, q = 0;
 int r = 0;
 int g = 0;

 cout<<"Please input p and q:"<<endl;
 cin>>p>>q;

 if( p <= 0 || q <= 0)
 {
  cout<<"Invalid data.Please input again."<<endl;
  return 0 ;
 }

 if(p < q)
 {
  p ^= q;
     q ^= p;
     p ^= q;
 }

 r = p % q;
 if(!r)
 {
  g = q;
  cout<<"The biggest is:"<<g<<endl;
  return 0;
 }

 while(r)
 {
  p = q;
  q = r ;
  r = p % q;
 }
 g = q ;
 cout<<"The biggest is:"<<g<<endl;