用歐幾里德算法(輾轉相除法)求兩個數的最大公約數的步驟如下:
先用小的一個數除大的一個數,得第一個餘數;
再用第一個餘數除小的一個數,得第二個餘數;
又用第二個餘數除第一個餘數,得第三個餘數;
這樣逐次用後一個數去除前一個餘數,直到餘數是0爲止。那麼,最後一個除數就是所求的最大公約數(如果最後的除數是1,那麼原來的兩個數是互質數)。
void f(const int m,const int n)
{
int d1,d2,d3=1;
if(m<=n) //將小數放到d1中
{
d1=m;
d2=n;
}
else
{
d1=n;
d2=m;
}
while(d3!=0)
{
d3=d2%d1;
d2=d1;
d1=d3;
}
cout<<m<<"和"<<n<<"最大公約數是:"<<d2<<endl;
if(d2==1)cout<<m<<"和"<<n<<"互質"<<endl;
else cout<<m<<"和"<<n<<"不互質"<<endl;
}