摘要:
欧几里德算法也就是一般说的辗转相除法。代码框架如下:int gcd(int a, int b) { return b ? gcd(b, a%b) : a;}粗略估计需要进行O(log b)次整数运算。实际上,当n固定后gcd(m, n)的平均迭代次数(m <= n)近视为(12*ln2 / π2)*ln(n) 。(不知道怎么证明的-_-!) 扩展欧几里德算法 设gcd(a, b) = d,则存在正整数x, y满足ax + by = d。算法框架int x, y;int ext_gcd(int a, int b) { if(b == 0) { x = 1; y ... 阅读全文