求解最大公约数的欧几里德算法,用户输入两个任意正整数,程序输出他们的最大公约数。算法如下:
步骤1: 如果p < q,则交换p和q。
步骤2: 令r是p /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;