1.穷举法

思路:

首先对输入的两个数x,y判断两者的大小,取两者中较小的数放入i中。然后用x%i;y%i,如果两者都为0,则此时i为最大公约数。如果其中有一个不为0,则i减1后再用x,y分别模上i(注意此时的i为x,y中的较小值,并不为1),如果其中有一个不为0,则i继续减1,以此类推直到x%i,y%i,两者都为0,此时的i即为两数的最大公约数。

int main()
{int x = 0;int y = 0;int i = 0;scanf("%d %d",&x, &y);//求得两者中的较小值if (x > y){//从i等于较小值开始循环for (i = y; i >= 1; i--){if (x % i == 0 && y % i == 0){printf("最大公约数是:%d", i);break;}}}//从i等于较小值开始循环else{for (i = x; i >= 1; i--){if (x%i==0&&y%i==0){printf("最大公约数是:%d", i);break;}}}return 0;

2.更相相减法

思路:

首先将输入的两数a,b相减,等于0则最大公约数即为a=b,如果不等于0则进入循环。在循环中先判断两者大小,再将较大值减去较小值的出来值赋给较大值。然后再用新得出来的较大值与原较小值相减,如果不等于0则进入循环,以此类推,直到新得出来的较大值与原较小值相减为0,此时最大公约数即为新较大值=原较小值。

int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);while ((a - b) != 0){//判断两数大小if (a > b){//将较大值赋较大值减去较小值得出来的值a = a - b;}else{//将较大值赋较大值减去较小值得出来的值b = b - a;}}printf("%d", b);return 0;

3.辗转相除法

思路:

首先对输入的两数a,b判断大小,然后将较大值模上较小值得出值c。如果c等于0,则最大公约数即为a=b。如果c不等于0,则进入循环将原较小值赋给新较大值,将值c赋给新较小值,然后再将新较大值模上新较小值得出来的值赋给c,如果c还是不为0则再进入循环,以此类推,直到c等于0.此时最大公约数为a=b。

nt main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);//判断两者大小if (a >= b){//将较大值模上较小值得出来的值赋给cint c = a % b;//判断c是否为0while (c != 0){//将原较大值,原较小值分别赋值a = b;b = c;//将较大值模上较小值得出来的值赋给cc = a % b;}printf("最大公约数为:%d", b);}else{int d = b % a;while (d != 0){b = a;a = d;d = b % a;}printf("最大公约数为:%d", a);}return 0;
}

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

  1. 求两个数的平均值(三种方法)

    求两个函数的平均值,很简单的想到可以用 (a+b)/2来实现. 代码块如下 方法一 int Average_one(int a, int b){return (a + b) / 2; } 但是如果a或 ...

  2. 求两数最大公约数和最小公倍数(详解)

    求两数最大公约数和最小公倍数 方法一:单独求解最小公倍数 若大数m是小数n的倍数,则大数m为所求的最小公倍数:若不是,另寻找一个能同时被两个整数的自然数.找到第一个后,break终止循环. 终止条件: ...

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

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

  4. c语言中用于获取字符串长度的函数是,C语言中求字符串长度的函数的几种实现方法...

    C语言中求字符串长度的函数的几种实现方法 1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { ass ...

  5. 机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数)

    机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数) 转载于:https://blog.csdn.net/promisejia/article/details/80159619?ops_req ...

  6. 284、一个宽带如何装两个路由器?这三种方法都可以使用

    很多朋友可能存这种情况,家里房间比较多,之前已经安装了一个无线路由器,但是在某些房间信号很差,想再增加一个无线路由器怎么办? 这个问题,也有不少朋友在问,其实实现的方法有好几种,实现的方法有三种: 二 ...

  7. 如何在一台计算机上使用两个网络,一个宽带如何装两个路由器?这三种方法都可以使用...

    原标题:一个宽带如何装两个路由器?这三种方法都可以使用 实现的方法有三种: 二级路由器.路由器改当交换机.无线桥接这三种,之前我也曾提到过,今天我们再来总结下两台路由器连接的三种方法. 一.无线路由器 ...

  8. 计算机怎么删除表格,电脑中删除Excel2010表格多余图片的三种方法

    为了让表格看起来更加直观,很多朋友都会在Excel中插入图片.那么,当我们大批量插入图片时,如果想要删除的话,应该怎么办呢?以下是系统城小编为您带来的电脑中删除Excel2010表格多余图片的三种方法 ...

  9. Altium designer 在原理图及PCB中高亮某一条网络的三种方法

    1. alt 键+鼠标左键 2. 利用原理图界面右下角的"笔"一样的工具 3 .Navigator(在原理图界面右下角,Designe Compiler 选项中),选择如图所示的n ...

最新文章

  1. Jquery前端分页插件pagination同步加载和异步加载
  2. sign函数的功能oracle,Oracle中sign函数和decode函数的使用
  3. centos安装nginx小记
  4. 清除 Xcode 项目缓存
  5. 关于realarm210 realarmTest.apk不能直接安装问题解决方法
  6. 论计算机与智能科学类,计算机与智能科学大类培养方案
  7. 学习笔记_jquery(js)遍历页面标签
  8. 作者:劳保强(1989-),男,中国科学院上海天文台助理工程师
  9. SpringCloud 从菜鸟到大牛之八 服务容错 Hystrix
  10. matlab两个曲线的名称怎么显示出来的,求MATLAB的高手,怎么把两张仿真曲线合并显示在一张图上?...
  11. ×××技术漫谈之IPSec(附MPLS)
  12. C语言必背18个经典程序
  13. 动态面板数据模型及Eviews实现
  14. 爱心的数学函数方程_求心形函数表达式~~~
  15. oracle 查看表历史记录,Oracle 查看表操作历史记录并恢复
  16. 网易云音乐热门作品名字和链接抓取(pyquery篇)
  17. 计算机桌面设置定时,电脑桌面定时提醒休息如何设置?
  18. 图片转PDF格式怎么弄?我来教你几个方法
  19. java 营业执照图片内容识别
  20. 在线教育项目用户登录和注册

热门文章

  1. VUE中$refs和$el的使用详解
  2. heaps 和 priority queue堆和优先队列的定义和数据结构表示
  3. JAVA WEB整合开发王者归来 -- 读书笔记 by CZF 完整版
  4. AJ1变色龙79.9/阿迪39.9/二裂酵母套盒39.9/有情洗发水9.9/
  5. 求n + nn + nnn + nnnn + .... = 用C语言
  6. Rasa使用指南01
  7. 如何通过maven官网查询相关依赖的具体代码和版本?
  8. 百度AI 实现人体姿态检测
  9. 全网最硬核 JVM TLAB 分析 6. TLAB 相关热门QA汇总
  10. 技术分享 | 服务端接口自动化测试, Requests 库的这些功能你了解吗?