最大公约数是两个数可以同时整除的数中最大的那个
这里用三种方法来解决

  1. 穷举法求最大公约数
    判断x和y的最大公约数,x和y其中一定有一个相对较小的数,然后从这个较小数开始遍历,不断地用x和y去除这个数,直到可以同时整除,那么就得出了最大公约数。
#include <stdio.h>int MyGCD(int _x, int _y)   //定义一个函数求两个数的最大公约数
{if (_x > _y)  //进行交换,保证_x是两个数中较小的一个方便后面遍历{int temp = _x;_x = _y;_y = temp;}int i = 0;for (i=_x; i >0; i--)   //找出最大公约数{if (_x%i == 0 && _y%i == 0){return i;}}return 0;
}int main()
{printf("请输入两个要判断的数:");int x = 0;int y = 0;scanf("%d %d", &x, &y);  //输入两个要判断的数int result = MyGCD(x, y);printf("最大公约数是:%d\n", result); return 0;
}
  1. 辗转相减法求最大公约数
    假设两个数x和y的最大公约数为t,那么x=m1*t,y=m2*t,我们假设x小于y,用y减去x还剩下(m2-m1)个t,这样一直减,直到一个数减为0,另一个数剩下的就是1个t,得出最大公约数。
#include <stdio.h>int MyGCD(int _x, int _y)
{while (_x * _y != 0)   //判断_x和_y都不为0{if (_x > _y)    //辗转相减{_x = _x - _y;//也可以简写成_x-=_y;}else if(_x < _y){_y = _y - _x;//也可以简写成_y-=_x;}else{return _x;   //如果两数相等,则任意返回_x或_y是一样的}}return _x == 0 ? _y: _x;
}int main()
{printf("请输入两个要判断的数:");int x = 0;int y = 0;scanf("%d %d", &x, &y);int result = MyGCD(x, y);printf("最大公约数是:%d\n", result);return 0;
}
  1. 辗转相除法求最大公约数
    假设两个数x和y的最大公约数为t,那么x=m1*t,y=m2*t,我们假设x小于y,用y去除x还剩下(m2/m1)个t,这样一直相除,直到一次除完之后模0,没有余数,赋值之后有一个数为0,另一个数剩下的就是1个t,得出最大公约数。
#include <stdio.h>int MyGCD(int _x, int _y)
{while (_x*_y!=0){if (_x > _y){_x %= _y;}else if(_x < _y){_y %= _x;}else{return _x;}}return _x == 0 ? _y: _x;
}int main()
{printf("请输入两个要判断的数:");int x = 0;int y = 0;scanf("%d %d", &x, &y);int result = MyGCD(x, y);printf("最大公约数是:%d\n", result);return 0;
}

辗转相减法和辗转相除法的代码很像,但是辗转相除法会相对来说效率更高一点,计算的会比辗转相除法次数少。

C语言求最大公约数的三种方法相关推荐

  1. c语言实现求最大公约数的三种方法

    一.最大公约数 最大公因数,也称最大公约数.最大公因子,指两个或多个整数共有约数中最大的一个.a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也 ...

  2. c语言数组最大可定义多少位_C语言求数组的最大值三种方法

    /* 黄哥Python培训 黄哥所写*/#include int maxValue(int* arr, int n);int maxRecursionValue(int* arr, int n);in ...

  3. 用C语言求最大公约数的4种方法

    C语言求最大公约数的四种方法如下: 辗转相除法:通过不断地交换两个数,使较大的数除以较小的数,最后得到的余数即为最大公约数. 更相减损术:通过不断地让两个数减去较小的数,最后得到的结果即为最大公约数. ...

  4. 两数求最大公约数的三种方法的C语言实现

    任意输入两个数,求出二者的最大公约数,以C语言实现.以下是三种方法以及对应思路: <1>辗转相除法. 定义两个变量存放两个数(a,b),先以冒泡法将较大数存放在在b内,较小数存放于a. 相 ...

  5. c语言求字符串长度的三种方法(部分略微优化)

    求字符串的长度,很多人都会直接想到用strlen函数,只需要头文件string.h就可以很轻松的实现,但对于我们c语言的初学者,也应该尝试用其他方法来进行实现,除了strlen函数外有三种方法可供参考 ...

  6. 求最大公约数的4种方法

    一.最大公约数与最小公倍数 最大公约数,属于数论所探究的内容. 最大公约数可以通过下面的三种方法求出来. 最小公倍数呢,它与最大公约数的乘机为所求数之积. 比如求 x,y的最大公约数和最小公倍数 记住 ...

  7. C语言|求最大公约数和最小公倍数多种方法

    在开始之前我们先了解下什么是最大公约数和最小公倍数: 例如有两个数:a 和b 最大公约数用gcd表示,最小公倍数用lcm表示. 1.最大公约数就意味着能同时被a和b整除,即a%gcd==0 & ...

  8. matlab求pi值的三种方法

    https://www.icourse163.org/learn/CSU-1002475002?tid=1450231442#/learn/content?type=detail&id=121 ...

  9. Matlab求矩阵的逆(三种方法)

    Matlab求矩阵的逆(三种方法) 说明:若所求矩阵为非奇异矩阵(可逆矩阵),则可以精确求得其逆矩阵:若所求矩阵为奇异矩阵,则所求出的逆矩阵是近似的(不精确). 下面以矩阵A为例. inv()方法 A ...

最新文章

  1. 对ASCII文件的操作
  2. Devops (1)
  3. 结合Boost.Geometry和Boost.Assign以及Boost.Range和Boost.Tuple的例子
  4. vue-router 在项目中的使用
  5. 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能...
  6. Jmeter上传文件
  7. openstack中彻底删除计算节点的操作记录
  8. 面试题:计算 n!阶乘的结果的末尾有几个0
  9. 汇编语言 王爽 【第四版】实验一
  10. 机电工程专业技术-测量技术
  11. 【数据结构】NOJ016—计算二叉树叶子结点数目
  12. C语言 AES算法 加密解密
  13. php tp 聚合数据接口,TP5结合聚合数据天气预报API查询天气
  14. 【音频处理】视频加速音频不变调
  15. 求两个正整数的最大公约数和最小公倍数
  16. error: #109: expression preceding parentheses of apparent call must have (pointer-to-) function typ
  17. WebSocket之仿QQWeb即时聊天系统(下)
  18. 挑战ISS,中国将自主建造宇宙空间站
  19. python侯先生爬楼梯_经典算法题:爬楼梯 ,以斐波那契数列来解题代码案例
  20. ABAQUS三维骨料随机分布脚本(三种粒子,水泥沙子石子)

热门文章

  1. spark学习之处理数据倾斜
  2. php 爬数据库,(3)php爬虫---mysql大批数据导入数据库-4种方法比较
  3. 天天基金数据接口及参考
  4. C语言中的多线程简介
  5. Windows下通过AFUWIN批量刷AMI类型主板的BIOS
  6. 手机号码后端验证工具类
  7. 手机QQ登录测试用例
  8. PROCEDURE和 FUNCTION的区别
  9. 职场沟通利器(1):顶级咨询公司PPT模板
  10. 音频拼接python