1.最大公约数-GCD
int GCD(int a,int b){if(a%b==0){return b; }else{return gcd(b,a%b); }
}
或
int Gcd(int a, int b){return b==0 ? a : Gcd(b,a%b);
}
2.最小公倍数-LCM
int GCD(int num1,int num2){if(num1%num2==0){return num2;}else{return GCD(num2,num1%num2);}
}
int LCM(int a,int b){int temp_lcm;temp_lcm=a/GCD(a,b)*b;//最小公倍数等于两数之积除以最大公约数return temp_lcm;
}
3.组合数 - C
概念:从m个不同元素中,任取n(n≤m)个元素并成一组,叫做从m个不同元素中取出n个元素的一个组合;从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。
公 式 c(m,n)=m!/((m-n)!*n!)
性质1 C(n,m)= C(n,n-m)
性质2 C(n,m)= C(n-1,m-1)+C(n-1,m)
这里利用性质2进行递归
int C(int m,int n){if(n==0) return 1; if(m==n) return 1;if(n==1) return m;else return C(m-1,n-1)+C(m-1,n);
}