利用指针把三个数从大到小输出
最大公约数:指某几个整数共有约数中最大的一个

方法一:相减法 也叫更相减损法

思路:

1、如果a > b a = a - b;

2、如果b > a b = b - a;

3、假如a = b,则 a或 b是最大公约数;

4、如果a != b;则继续从一开始执行;

5、也就是说循环的判断条件为a != b,直到a = b时,循环结束。

举例说明:

a = 28 b = 21

a>b

则 a = a - b = 28 - 21 = 7

  b = 21

b>a

则 b = b-a = 21 - 7 = 14

          a = 7

b>a

则 b = b - a = 14 - 7 = 7

         a = 7

此时 a = b =7
循环结束

代码展示

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>int main()
{int a = 0;int b = 0;printf("输入两个数求最大公约数:");scanf("%d%d",&a,&b);while(a!=b){if(a>b)a = a - b;if(a<b)b = b - a;}printf("%d\n",a);return 0;
}

结果展示


方法二
思路:

1.选出a,b中最小的一个数字放到c中
2.分别用a,b对c求余数,即看是否能被c整除
3.直到a,b同时都能被c整除
4.如不能整除,c– (c的值减一) 继续从2开始执行
5.也就是说该循环的判断条件为 a,b能否同时被c整除,只要有一个数不能被c整除,循环继续执行

举例说明:

a = 9 b = 4
将其中最小的数字赋予c
c = 4
a%c = 1 ,b%c = 0 a,b不能同时被c整除 循环继续
c– ,c = 3
a%c = 0 ,b%c = 1 a,b不能同时被c整除 循环继续
c– ,c = 2
a%c = 1 ,b%c = 0 a,b不能同时被c整除 循环继续
c– ,c = 1
a%c = 0 ,b%c = 0 a,b同时被c整除 循环结束 c是a和b的最大公约数

代码展示

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>int main()
{int a = 0;int b = 0;int c = 0;while(1){   printf("输入两个数求最大公约数:");scanf("%d%d",&a,&b);c = (a>b)?b:a;     //三目运算符 while((a%c != 0) || (b%c != 0)){c--;}printf("最大公约数为: %d \n",c);}return 0;
}

结果展示


方法三:辗转相除法

思路:
1.将两整数求余 a%b = c
2.如果c = 0;则b为最大公约数
3.如果c != 0,则 a = b;b = c;继续从1开始执行
4.也就是说该循环的是否继续的判断条件就是c是否为0

举例说明:

a = 21 b = 28

c = a%b = 21%28 = 21, 则c = 21 此时c不为0
执行 a = b , b = c , a = 28 ,b = 21

c = a%b = 28%21 = 7 ,则c = 7 此时c不为0
执行 a = b , b = c , a = 21 , b = 7

c = a%b = 21%47 = 0 ,则c = 0 循环结束

代码展示:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int a = 0;int b = 0;int c = 0;while(1){   printf("输入两个数求最大公约数: ");scanf("%d%d",&a,&b);c = a%b;while(c){a = b;b = c;c = a%b;}printf("最大公约数为: %d\n",b);}return 0;
}

结果展示

C语言中求最大公约数的算法(三种)相关推荐

  1. C语言中比较两数的大小——三种方法

    定义a = 10,b = 20,以下为三种比较方式: 一.if-else法 #include<stdio.h> int main(){int a = 10;int b = 20;int r ...

  2. 用c语言中的函数来求公约数,C语言中求最大公约数的函数

    满意答案 fzqtDv 2013.11.04 采纳率:42%    等级:12 已帮助:6067人 int g(int m,int n) { int k,p,t; if(m for(k=t; ;k-- ...

  3. 在c语言中基本数据类型主要有哪三种,C语言第三讲,基本数据类型

    C语言第三讲,基本数据类型 一丶基本数据类型讲解 在C语言当中,有四种基本数据类型 分别是: 整形 浮点型 指针 聚合类型(数组和结构) 整型家族包括: 字符 短整型 整形 长整型 ** 都分为有符号 ...

  4. c语言怎样求最大公约数,c语言求最大公约数

    求差判定法. 如果两个数相差不大,可以用大数减去小数,所得的差与小数的最大公约数就是原来两个数的最大公约数.例如:求78和60的最大公约数.78-60=18,18和60的最大公约数是6,所以78和60 ...

  5. python中求最小公约数,python求最大公约数和最小公倍数的简单方法

    python求最大公约数和最小公倍数的简单方法 python怎么求最大公约数和最小公倍数 一.求最大公约数 用辗转相除法求最大公约数的算法如下: 两个正整数a和b(a>b),它们的最大公约数等于 ...

  6. C语言求35 45的最大公约数,C语言怎么求最大公约数和最小公倍数

    #3 段梦超2009-12-20 21:31 输入两个正整数m和n, 求其最大公约数和最小公倍数. <1> 用辗转相除法求最大公约数 算法描述: m对n求余为a, 若a不等于0 则 m 最 ...

  7. c语言如何判断最小公倍数,c语言如何求最大公约数和最小公倍数?

    推荐教程:<C视频教程> c语言如何求最大公约数和最小公倍数? c语言求最大公约数和最小公倍数的方法: 求最大公约数算法: 有两整数a和b: ① a%b得余数c ② 若c=0,则b即为两数 ...

  8. 四种求最大公约数的算法 C / C++

    文章目录 前言 一.辗转相除法 1. 算法简介 2. 算法描述 3. 代码及复杂度 二.穷举法(枚举法) 1. 算法简介 2. 算法描述 3. 代码及复杂度 三.更相减损法 1. 算法简介 2. 算法 ...

  9. C语言Prims求最小生成树MST的算法(附完整源码)

    C语言Prims求最小生成树MST的算法 C语言Prims求最小生成树MST的算法完整源码(定义,实现,main函数测试) C语言Prims求最小生成树MST的算法完整源码(定义,实现,main函数测 ...

最新文章

  1. Python 程序员常见错误
  2. (C#)AJAX post方式传值
  3. Ubuntu 设置Android adb 环境变量
  4. UIWebView中字体自动放大问题的探究
  5. java android统计图_Android统计图表之柱状图(条形图)
  6. rgb 灰色_金属+RGB+无线,我要买爆这款海盗船VIRTUOSO鉴赏家游戏耳机
  7. 博客园北京俱乐部第二次技术活动(2009/4/4)总结
  8. 深度学习试题_深度学习理论类常见面试题(二)
  9. com app.html,downloadApp.html
  10. eclipse(window平台)快捷键总结
  11. word论文格式调整
  12. 三部曲打造无路由器破解闪讯WiFi共享 经好几个同学验证
  13. Oracle openv目录,nub备份安装目录/openv由来
  14. 动态规划之LCS算法
  15. 计算机学报范文,计算机学报论文
  16. sql 中英文格式的时间转数字格式
  17. django批量修改table_django restframework 多对多的批量修改,基于逻辑删
  18. 关于使用Cytoscape软件合并多个网络图
  19. 启用计算机无线网络连接,无线网络连接未启用DHCP是怎么回事?如何解决?
  20. 计算机一级考试操作题未来教育,2019年计算机一级考试MS Office操作试题002

热门文章

  1. mysql 生成随机数 —— 数字、字符串、手机号、日期、姓名、一段中文汉字
  2. 勒索病毒SARA,请勿用于非法用途。
  3. [论文笔记] [2008] [ICML] Extracting and Composing Robust Features with Denoising Autoencoders
  4. python语法基础-cPickle.dump使用
  5. 3344avd_AVD生根
  6. 西门子1513CPU冗余组态
  7. 【性能测试】轻量级压测工具Hey
  8. python中str类型和object类型_pandas str和object类型之间的区别
  9. sublime text 光标移动行末/行首
  10. python判断密码是否正确_python密码判断是否符合要求的方法