1. 程式人生 > >基本數論算法

基本數論算法

top 清單 col 因數 code 但是 技術分享 bsp 數論算法

dalao博客,至少很好看。。

因為本人數論實在渣渣,但是考試確是得考的,只好盡早學,盡早掌握。

最大公因數

普通gcd

技術分享
1 inline int gcd(int x,int y)
2 {
3     return y == 0 ? x : gcd(y, x % y)
4 }
View Code

二進制優化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 }
View Code

基本數論算法