求兩個數互質算法

用歐幾里德算法(輾轉相除法)求兩個數的最大公約數的步驟如下:
先用小的一個數除大的一個數,得第一個餘數;
再用第一個餘數除小的一個數,得第二個餘數;
又用第二個餘數除第一個餘數,得第三個餘數;
這樣逐次用後一個數去除前一個餘數,直到餘數是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;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章