首页 > 编程语言 >欧几里得算法求最大公约数

欧几里得算法求最大公约数

时间:2023-05-31 17:12:30浏览次数:27  
标签:gcd 18 欧几里得 30 最大公约数 算法 print

欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。
以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数
假如需要求 18 和 30 两个正整数的最大公约数:

调用函数:print(gcd(18, 30)),a,b值变化如下
a       b
30 ÷ 18 = 1……12
18 ÷ 12 = 1……6
12  ÷  6 = 2……0
至此,最大公约数为6

def gcd(a, b):
    while a != 0:
        a, b = b % a, a
    return b
print(gcd(18, 30))

  

若a、b参数互换,print(gcd(30, 18)),a、b值变化如下:

  a       b

18÷ 30 = 0……18

30 ÷ 18 = 1……12
18 ÷ 12 = 1……6
12 ÷  6 =  2……0

可见,函数 gcd(a,b) 中a、b值谁大谁小并不影响结果。只差一步循环次数

标签:gcd,18,欧几里得,30,最大公约数,算法,print
From: https://www.cnblogs.com/sangern/p/17446707.html

相关文章

  • Snap算法学习01-02关于net节点、边、权值、标签的读写操作——netinf中cascades层级信
      Model可选值—— 0:exponential,  1:powerlaw,  2:rayleigh"                                      ......
  • Bellman-Ford算法——为什么要循环n-1次?图有n个点,又不能有回路,所以最短路径最多n-1边
    单源最短路径给定一个图,和一个源顶点src,找到从src到其它所有所有顶点的最短路径,图中可能含有负权值的边。Dijksra的算法是一个贪婪算法,时间复杂度是O(VLogV)(使用最小堆)。但是迪杰斯特拉算法在有负权值边的图中不适用,Bellman-Ford适合这样的图。在网络路由中,该算法会被用作距......
  • 算法总结——堆栈、字符串、数组类题目
    先说stack的题目stack的实现:链表,数组题目:(1)简单的:minstack,一个数组实现三个stack(2)经典的stack问题:经典汉诺塔问题,逆波兰式计算或者产生逆波兰式,简化文件路径,验证括号对是否合法,找出最长有效括号(贪心+stack求解)(3)涉及tree的遍历问题:tree中序遍历的迭代解法,二叉搜索树的两节点和(twosu......
  • 石子合并(GarsiaWachs算法)
    对于石子合并问题,有一个最好的算法,那就是GarsiaWachs算法。时间复杂度为O(n^2)。它的步骤如下:设序列是stone[],从左往右,找一个满足stone[k-1]<= stone[k+1]的k,找到后合并stone[k]和stone[k-1],再从当前位置开始向左找最大的j,使其满足stone[j]> stone[k]+stone[k-1],插到j的后面就......
  • python版本的“共轭梯度法”算法代码
    在看代码的过程中遇到了共轭梯度法这个概念,对这个算法的数学解释看过几遍,推导看过了,感觉懂了,然后过上一些日子就又忘记了,然后又看了一遍推导,然后过了一些日子也就又忘记了,最后想想这个算法的数学解释就不要再取深究了,毕竟平时也不太会用到,偶尔用到了只要保证代码会写也就OK了。 ......
  • Lucene默认的打分算法——ES默认
    改变Lucene的打分模型随着ApacheLucene4.0版本在2012年的发布,这款伟大的全文检索工具包终于允许用户修改默认的基于TF/IDF原理的打分算法。LuceneAPI变得更加容易修改和扩展打分公式。但是,对于文档的打分计算,Lucene并只是允许用户在打分公式上修修补补,Lucene4.0推出了更多的打......
  • BFGS算法
    今天,我来讲一种在机器学习中常用到的优化算法,叫做BFGS算法。BFGS算法被认为是数值效果最好的拟牛顿法,并且具有全局收敛性和超线性收敛速度。那么接下来将会详细讲解。Contents   1.什么是拟牛顿法  2.拟牛顿法原理  3.DFP算法原理  4.BFGS算法原理  5.BFGS算......
  • Java实战-基于JDK的LRU算法实现、优雅的实现代码耗时统计(Spring AOP、AutoCloseable
    场景Java中基于JDK的LRU算法实现LRU算法-缓存淘汰算法-Leastrecentlyused,最近最少使用算法根据数据的历史访问记录来进行淘汰数据,其核心思想是:如果有数据最近被访问过,那么将来被访问的几率也更高在Java中可以利用LinkedHashMap容器简单实现LRU算法LinkedHashMap底层就是用......
  • 莫比乌斯反演与最大公约数
    在数论中,有很多题目都与莫比乌斯反演有关,最典型的就是最大公约数。比如你可以见到如下常见问题。(1)已知,求为质数的的对数,或者等于1的的对数。(2)已知和,求为质数的的对数,或者等于1的的对数。(3)已知,求的对数。(4)已知和,求的对数。上面的问题其实都可以用莫比乌斯反演来解,时间复杂度都还可以......
  • twitter僵尸网路检测,只能twitter自己做这种算法
     twitter僵尸网路检测数据样例 TwitterbotdetectorIntheprevioussections,wesawhowtobuildamachinelearning-basedbotnetdetector.Inthisnewproject,wearegoingtodealwithadifferentprobleminsteadofdefendingagainstbotnetmalware.Weareg......