本篇博客来讲一讲学习C语言过程中遇到的一种解法——辗转相除法

首先我会介绍辗转相除法的概念,然后会用一道例题进行运用,最后会进行总结

一、辗转相除法的概念

辗转相除法又称欧几里得算法辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。

由概念可知,该算法主要是用于两个非负整数的最大公约数,那么如何求呢,请看下文分析

二、如何利用辗转相除法求两个数的最大公约数

这里先看代码:

int main()
{int m = 0;int n = 0;scanf("%d %d", &m, &n);int k = 0;while (k = m % n){m = n;n = k;}printf("%d\n", n);return 0;
}

所谓辗转,指的就是把 m % n 赋给k,把 n 赋给 m ,最后再把 k 赋给 n ,直到 k 为零的时候,while循环也会刚好停下,此时的 k 就是 m 和 n 的最大公约数了。

这样说属实有点绕,请C友们结合我画的思路图理解一下:

另外,辗转相除法相较于传统写法,有一个较大的优点就是:辗转相除法不用去求 m 和 n 哪个大哪个小,下面请看我用一幅图给大家解释清楚:

这里大家应该就能理解到我说的不用管 m 和 n 谁大谁小了吧,因为就算取模的数比较小(即“较小数”%“较大数”),辗转相除法会自动把两个数交换位置,变成这样子:“较大数” % “较小数”

三、总结

辗转相除法是用于求两个非负整数的最大公约数的高效方法

这种方法可以不用去计算两个数谁大谁小,这样能够提高运算效率

具体还是看我上面的手绘图加深一下理解

这就是本篇博客的全部内容啦,如果有不足之处欢迎在评论区指出哦!

详解“辗转相除法”(如何求最大公约数)相关推荐

  1. php怎么求最小公倍数,C++_详解C语言求两个数的最大公约数及最小公倍数的方法,求两个正整数的最大公约数nbs - phpStudy...

    详解C语言求两个数的最大公约数及最小公倍数的方法 求两个正整数的最大公约数 思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法.通式分别为 f(x, y) = f(y, x%y) ...

  2. 『矩阵论笔记』详解最小二乘法(矩阵形式求导)+Python实战

    详解最小二乘法(矩阵形式求导)+Python实战! 文章目录 一. 矩阵的迹 1.1. 转置矩阵 1.2. 迹的定义 1.3. 七大定理 二. 最小二乘法 2.1. 求解介绍 2.2. 另一角度 2. ...

  3. 暴力 gcd __gcd (详解)C语言求两个数的最大公约数

    首先我们要先知道gcd是什么东西? GCD作为缩写意义有多种.它通常表示最大公约数(greatest common divisor,简写为gcd:或highest common factor,简写为h ...

  4. 辗转相除法原理(求最大公约数)

    以往我们求最大公约数可以从采用遍历的方式(常规思路) 1.穷举法 int gcd(int a,int b) {for(int i=a;i>0;i--){if(a

  5. 详解,python求矩阵的秩,你肯定能看懂

    在 Python 中,可以使用 NumPy 库求矩阵的秩. NumPy 库提供了 numpy.linalg.matrix_rank() 函数,该函数可以计算矩阵的秩. 求矩阵的秩知识点目录 Pytho ...

  6. 动态规划之如何将问题抽象转化为0-1背包问题(详解利用动态规划求方案数)

    ⭐️前面的话⭐️ 本篇文章介绍如何对问题抽象转化成0-1背包问题求解和运用0-1背包求方案数.

  7. c语言辗转相除法约分分数,更相损减法和辗转相除法 求最大公约数和最小公倍数(C语言)...

    假设有两个数a和b,求a,b的最大公约数和最小公倍数实际上是一个问题,得出这两个数的最大公约数就可以算出它们的最小公倍数. 最小公倍数的公式是 a*b/m m为最大公约数 因为 a=m*i; b=m* ...

  8. c语言l利用辗转相除法约分,如何用c语言求最大公约数和最小公倍数

    如何用c语言求最大公约数和最小公倍数 输入两个正整数m和n, 求其最大公约数和最小公倍数. <1> 用辗转相除法求最大公约数 算法描述: m对n求余为a, 若a不等于0 则 m 否则 n ...

  9. 求最大公约数:更相减损法和辗转相除法

    更相减损法原理 假设有两个数161和63,我们要求这两个数的最大公因数,不妨假定这个最大公因数为m,我们可以将较大的数161看成63+98,63与98的和161可以被m整除,其中63也可以被m整除,自 ...

最新文章

  1. Xcode可重用代码块code snippets
  2. 百度信息流和搜索业务中的KV存储实践
  3. SAP RETAIL WA03 基于分配表创建PO报错 - No work list could be selected –
  4. Android自定义RadioButton
  5. Harvard-X免费生物信息课程 (代码、文档、数据) - 适合系统学习
  6. Android多线程的使用
  7. 包含命名空间的xml反序列化 (1.7环境下)
  8. SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.
  9. 15-struct(构造函数,重载)
  10. python模板注入_Python 模板引擎的注入问题分析
  11. GY-53红外激光测距模块的使用以及pwm模式代码的实现
  12. 如何进行大文件传输?
  13. Angular JS introduce
  14. 超硬核!操作系统学霸笔记,考试复习面试全靠它
  15. Paper:LIME之《Why Should I Trust You? Explaining the Predictions of Any Classifier为什么要相信你?解释任何分类器的预测》翻
  16. 九招教你完全了解液晶拼接屏
  17. 什么是Subversion?
  18. 迅雷API批量下载巨潮年报
  19. 外企的那些所谓礼貌用语
  20. 双变量polynomial commitment

热门文章

  1. 【转】用IDCNN和CRF做端到端的中文实体识别
  2. halcon之NCC匹配
  3. Camels【DP】
  4. deny all后如何优雅的处理403
  5. Misra-C编码规范全解读 - 总目录
  6. 变频技术在起重机上的应用
  7. jQuery中ajax获取数据赋值给页面
  8. SQL修改表字段名称及结构
  9. Java中replaceAll去除不掉空格解决方案
  10. Matlab_逐步回归