整除与剩余
欧几里得算法
任务:求两个数a,b的最大公约数gcd(a,b)。
定义:gcd(a,b)=gcd(b,a mod b),其中a>=b。不断迭代直到b==0,a就是原来数对的最大公约数
复杂度:O(logN)
输入:a,b
输出:a,b的最大公约数
int gcd(int a, int b) { return b==0?a:gcd(b, a%b); }
int gcd(int a, int b) { while (b) { int c = a % b; a = b; b = c; } return a; }