优化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
}
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
}
相关文章推荐
- Redis命令执行全过程
- 资金安全责任险对个人账户负责?
- POJ -2503 Babelfish
- java数据结构之栈
- map与pagelayout同步新方法
- Linux在device is busy处理
- Python 3语法小记(九) 异常 Exception
- POJ 2955 — Brackets 区间DP
- ubuntu设置系统时间与网络时间同步(转)
- SVN使用教程
- 最大流量dinci模板
- jQuery 源码分析 7: sizzle
- misc_register、 register_chrdev 的区别总结
- Leetcode 15 3Sum
- java多线程学习笔记——锁测试与超时
- 科大讯飞语音+ 离线听写随记
- Codeforces Round #282 (Div. 2) C. Treasure 贪心
- 智能,无源无线开关
- [转载] Quartz作业调度框架
- HDU 1548