社区讨论
关于GCD二进制优化的疑问
学术版参与者 8已保存回复 15
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 15 条
- 当前快照
- 1 份
- 快照标识符
- @mi6yz638
- 此快照首次捕获于
- 2025/11/20 13:07 4 个月前
- 此快照最后确认于
- 2025/11/20 15:39 4 个月前
100000000*普通gcd:13.455秒
CPPint gcd(int x,int y){
return (!y)?x:gcd(y,x%y);
}
100000000*二进制优化GCD:23.17秒
CPPint GCD(int x,int y){
int i=0,j=0;
if(!x)return y;
if(!y)return x;
while(!(x&1))x>>=1,i++;
while(!(y&1))y>>=1,j++;
if(j<i)i=j;
while(1){
if(x<y)x^=y,y^=x,x^=y;
if(!(x-=y))return y<<i;
while(!(x&1))x>>=1;
}
}
居然优化后变慢了!
回复
共 15 条回复,欢迎继续交流。
正在加载回复...