首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

漫画算法:辗转除法是什么鬼?

辗转除法, 又名欧几里得算法(Euclidean algorithm),目的是求出两个正整数的最大公约数。它是已知最古老的算法, 其可追溯至公元前300年前。...最后总结一下上述所有解法的时间复杂度: 1.暴力枚举法:时间复杂度是O(min(a, b))) 2.辗转除法:时间复杂度不太好计算,可以近似为O(log(max(a, b))),但是取模运算性能较差。...避免了取模运算,但是算法性能不稳定,最坏时间复杂度为O(max(a, b))) 4.更相减损术与移位结合:不但避免了取模运算,而且算法性能稳定,时间复杂度为O(log(max(a, b))) 本文原本只写到辗转除法就终告结束...由于篇幅所限,本文省略了关于辗转除法原和更相减损术的原理及证明。其实证明过程并不复杂,细心的同学们也可以自己尝试研究一下。谢谢大家的捧场!

33330

辗转除法到求逆元,数论算法初体验

今天是算法和数据结构专题的第22篇文章,我们一起来聊聊辗转除法辗转除法又名欧几里得算法,是求最大公约数的一种算法,英文缩写是gcd。...所以如果你在大牛的代码或者是书上看到gcd,要注意,这不是某某党,而是指的辗转除法。 在介绍这个算法之前,我们先来看下最大公约数问题。 暴力解法 这个问题应该很明确了,我们之前数学课上都有讲过。...辗转除法 接下来就轮到正主——辗转除法出场了,这个算法在《九章算术》当中曾经出现过,叫做更相减损术。...但是我们的计算当中又涉及除法,这个时候应该怎么办? 这个时候就需要用到逆元了,逆元也叫做数论倒数。...总结 今天我们聊了欧几里得定理聊了辗转除法还聊了拓展欧几里得和求解逆元,虽然这些内容单独来看并不难,合在一篇文章当中量还是不小的。

1.4K20

详解最大公约数和最小公倍数

三种方法暴力试除,更损减,辗转相除 Number1.暴力试除 把它排在num1不是因为它好用,是因为 额...我乐意啦 总体思路:假设要求a,b两个数的最大公约数,先求a,b两数的因子,因子会求吧(如果不会看这里...Number3.辗转除法 代码镇帖 #include int main() { int a, b, t = 0, x = 0, y = 0; scanf_s("%d%d", &...a,b都是最大公约数,而辗转除法(这个问欧几里得)后只有a是最大公约数。...两种方法本质相同但又各有优劣,从算法本身看辗转相除大大减少了运算时间,所以当遇到一个很大的数的时候,它的运行速率要远快于更损减法,但辗转相除如果变量不初始化就会进入无限循环从而得不到结果。...但综上所述,如果要攻算法,建议用辗转相除,因为更损减法容易运行超时啦

7010
领券