您的位置:首页 > 编程语言

编程之美最大公约数

2012-09-16 22:12 162 查看


还好看到了,这个以前好早见到过。

用得是辗转相除法。

k =x/y b=x%y 则 x = ky+b

如果一个整数能够同时整除x和y,则必能同时整除b和y;而能够同时整除b和y的数也必能同时整除x和y

即 x,y和b和y的公约数相同

因此代码很简洁

int gcd(int x,int y)
{
      return (!y)?x:gcd(y,x%y);
}


编程之美第二种思路做了一定的扩展

x,y 的公约数和x-y,y的公约数相同

int gcd(int x,int y)
{
       if(x<y)
           gcd(y,x);
      if(y==0)
         return x;
     return gcd(x-y,y);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: