int gcd(int a, int b) {
int az = __builtin_ctz(a);
int bz = __builtin_ctz(b);
int z = az < bz ? az : bz, d;
b >>= bz;
while(a) {
a >>= az, d = b - a;
az = __builtin_ctz(d);
if(a < b)b = a;
if(d < 0)a = -d;
else a = d;
}
return b << z;
}
改成 d <= 0 却超时了,这是为什么?