天生舞男

我喜欢谦虚的学习各种...,希望自己能坚持一辈子,因为即使一张卫生巾也是有它的作用.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Get the biggest common divisor

Posted on 2006-02-21 09:46  天生舞男  阅读(297)  评论(0编辑  收藏  举报

// 我们可以从两个数的比较小的那个开始,看看时候可以同时整除这两个数,如果可以,那么就是结果。
  // 如果不行,我们就把它减一,再试。一直到减到1,这时一定是可以整除的。
  /*
  public static int GetBigestCommonDivisor(int x, int y)
  {
   int nresult;
   if (x > y)
    nresult = y;
   else
    nresult = x;
   for (;nresult > 1;nresult --)
   {
    if ((x % nresult) == 0 && (y % nresult) == 0)
     break;
   }
   return nresult;
  }
  */

  // 首先我们假设结果是两个数中小的那一个是结果,用它去除比较大的数,如果余数是0,
  // 那么它就是结果。如果不是0,那么我们就把这个余数假设为结果,把原来小的那个数作为验证的被除数,再进行验证。直到找到结果。
  public static int GetBigestCommonDivisor(int x, int y)
  {
   int ntemp;
   // Ensure x > y
   if (x < y)
   {
    ntemp = x;
    x = y;
    y = temp;
   } 

   while (y > 1)
   {
    temp = x % y;
    if (ntemp == 0)
     break;
    x = y;
    y = ntemp;
   }
   return y;
  }