首页 > 代码库 > 最大公约数(欧几里得算法)
最大公约数(欧几里得算法)
public static long gcd(long m, long n) { while(n != 0) { long rem = m%n; m = n; n = rem; gcd(m,n); } return m;}
在一次迭代中余数并不按照一个常数因子递减,然而,我们可以证明,在两次迭代以后,余数最多是原始值的一半。这就证明了,迭代次数至多是2logN=O(logN)从而得到运行时间。
定理:如果M>N,则M mod N<M/2。
证明:如果N<= M/2,则由于余数小于N,固定理在这种情况下成立。另一种情形是N>M/2。但是此时M仅含有一个N从而余数为M-N<M/2,定理得证。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。