2.更相减损法-传送门
https://baike.baidu.com/item/%E6%9B%B4%E7%9B%B8%E5%87%8F%E6%8D%9F%E6%9C%AF/449183?fr=aladdin
int gcd(int a,int b){//辗转相除法 int x; x=a%b; while (x!=0){ a=b; b=x; x=a%b; } return b; } int gcd_1(int a,int b){//更相减损法 int cnt=0; int x,tmp; if(a==b) return a; while(a%2==0&&b%2==0){ a/=2; b/=2; cnt++; } do{ if(a<b){ tmp=b; b=a; a=tmp; } x=a-b; a=b; b=x; }while(a!=x); return a*pow(2,cnt); }