Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1584588
  • 博文数量: 399
  • 博客积分: 8508
  • 博客等级: 中将
  • 技术积分: 5302
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-14 09:28
个人简介

能力强的人善于解决问题,有智慧的人善于绕过问题。 区别很微妙,小心谨慎做后者。

文章分类

全部博文(399)

文章存档

2018年(3)

2017年(1)

2016年(1)

2015年(69)

2013年(14)

2012年(17)

2011年(12)

2010年(189)

2009年(93)

分类:

2010-07-29 14:34:51

inline int GCD(int x,int y)  
{
       
int i,j;
       
if(x==0) return y;
       
if(y==0) return x;
       
for(i=0;0==(x&1);++i)x>>=1;   // 去掉所有的2
        for(j=0;0==(y&1);++j)y>>=1;   // 去掉所有的2
        if(j<i) i=j;
       
while(1){
               
if(x<y)x^=y,y^=x,x^=y;   // 若 x < y 交换 x, y
                if(0==(x-=y)) return y<<i;  // 若x == y, gcd == x == y (就是在辗转减,while(1)控制)
                while(0==(x&1))x>>=1; // 去掉所有的2
        }
}
阅读(1973) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

hello_ketty2016-04-22 10:12:57

x^=y,y^=x,x^=y;   // 若 x < y 交换 x, y
这步操作很高明啊

hello_ketty2016-04-22 09:55:05

哇,一看到位操作,怎么就有点迷糊呢。