求最大公因数和最小公倍数
做了PTA上的L1--009
才学了这两个东西
果然打题才是促使我学习的好东西
贴一下比较喜欢的求最大公因数GCD的代码
int gcd(int a, int b){ //辗转相除 while(a != b) { if(a > b) a-=b; else b-=a; } return a; }
1 int max(int a, int b)//求最大公因数 2 { //gcd(a,b) = gcd(a, a%b)
3 int r; 4 while(a&&b) 5 { 6 while(b) 7 { 8 r=a%b; 9 a=b; 10 b=r; 11 } 12 } 13 return a; 14 }
更快的求gcd的方法!
int gcd(int a,int b) { while(b^=a^=b^=a%=b); return a; }
然后呢
对于两个数 a b
求它们的最小公倍数的方法就是
a*b/max(a,b)