您的位置:首页 > 其它

优化gcd

2015-07-25 16:17 423 查看
int gcd(int x,int y )

2

{

3

if(x < y) return gcd(y,x); // x>y

4

if( y == 0) return x; // if y=0, x is GCD

5

else

6

{

7

if( !(x%2) )

8

{

9

if( !(y%2) ) //x,y both even

10

return 2*gcd(x >> 1, y >> 1);

11

else // x is even, y is odd

12

return gcd(x >> 1, y );

13

}

14

else

15

{

16

if( !(y%2) ) // x is odd, y is even

17

return gcd(x, y >> 1);

18

else // x, y both odd

19

return gcd(y,x-y);

20

}

21

}

22

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