dalao博客,至少很好看。。
因为本人数论实在渣渣,但是考试确是得考的,只好尽早学,尽早掌握。
最大公因数
普通gcd
1 inline int gcd(int x,int y) 2 { 3 return y == 0 ? x : gcd(y, x % y) 4 }
二进制优化gcd
1 inline int bsgcd(int x, int y) 2 { 3 if(x == y) return x; 4 if(x < y) x ^= y ^= x ^= y; 5 if(!(x & 1)) //x偶 y偶 gcd(x,y)=2*gcd(x/2,y/2),x偶 y奇 gcd(x,y)=gcd(x/2,y) 6 return (!(y & 1)) ? 2 * bsgcd(x >> 1, y >> 1) : bsgcd(x >> 1, y); 7 //x奇 y偶 gcd(x, y)=gcd(x,y/2) 8 return (!(y & 1)) ? bsgcd(x, y >> 1) : bsgcd(y, x - y); 9 }
时间: 2024-10-06 00:54:04