本文主要向大家介绍了如何用C语言求两个数的最大公约数的三种算法,通过具体的实例让大家了解,希望对大家学习C语言有所帮助。

最大公约数:指某几个整数共有约数中最大的一个。

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

思路:

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

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

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

4.如果a != b,则继续从1开始执行

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

循环结束

代码展示:[cpp] view plain copy print?

1. #include

2. int main()

3. {

4.     int a,b;

5.     printf("输入两个数字求最大公约数:");

6.     scanf("%d%d",&a,&b);

7.     while(a != b)

8.     {

9.         if(a > b)

10.             a = a - b;

11.         else

12.             b = b - a;

13.     }

14.     printf("最大公约数为:%d\n",a);

15.

16.     return 0;

17.

18. }

运行效果:

方法二:穷举法

思路:

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的最大公约数

代码展示:[cpp] view plain copy print?

1. #include

2. int main()

3. {

4.

5.     int a,b,c;

6.     printf("输入两个数字求最大公约数:");

7.     scanf("%d%d",&a,&b);

8.     c=(a>b)?b:a;   //三目运算符 将最小的赋给c

9.     while(a%c!=0||b%c!=0)    //a,b同时能被c整除 不执行该循环

10.     {

11.         c--;

12.     }

13.     printf("最大公约数为:%d\n",c);

14.

15. }

三目运算符

运行效果:

方法三:辗转相除法

思路:

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 循环结束

代码展示:

[cpp] view plain copy print?

1. # include

2. int main ()

3. {

4.     int a,b,c;

5.     while(1)

6.     {

7.         printf("输入两个数字求最大公约数:");

8.         scanf("%d%d",&a,&b);

9.         c = a%b;

10.         while(c!=0)

11.         {

12.             a = b;

13.             b = c;

14.             c = a%b;

15.         }

16.         printf("最大公约数为:%d\n",b);

17.     }

18. }

运行效果:

以上就介绍了C/C+的相关知识,希望对C/C+有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言C/C+频道!

c语言编程 求一个数根号3,如何用C语言求两个数的最大公约数的三种算法相关推荐

  1. c语言编程输出我的学号名字,如何用C语言编写自己的姓名和学号

    可以参考下面的代码: #include #include int main(void) { FILE *fp=fopen("data.txt","r"); if ...

  2. java 求最大公因数_求最大公约数的三种算法(java实现)

    三种算法: //欧几里得算法(辗转相除): public static int gcd(int m,int n) { if(m int k=m; m=n; n=k; } //if(m%n!=0) { ...

  3. 最大公约数简便算法_求最大公约数的几种算法

    给定两个整数,求出这两个整数的最大公约数是我们从小就接触过的问题,但是我们如何用更简洁的算法来计算呢? 本文中,假定这两个整数是m和n且m>=n>=0.让我们从最简单的算法说起! 一.Co ...

  4. c++ 求四边形面积和周长_C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少?C语言编程题 题目:任意输入4...

    C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少? C语言编程题 题目:任意输入4 www.zhiqu.org     时间: 2020-12-07 我测试过了,四点一线,凹四边形,四边形 ...

  5. C语言编程>第一周 ⑥ 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

    例题:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因为153等于 ...

  6. c语言求最小公倍数和最大公约数三种算法

    C语言求最小公倍数和最大公约数三种算法(经典) 求最小公倍数算法: 最小公倍数=两整数的乘积÷最大公约数 求最大公约数算法: (1)辗转相除法 有两整数a和b: ① a%b得余数c ② 若c=0,则b ...

  7. 三种算法求两个正整数的最大公约数和最小公倍数;求三个数的最大公约数和最小公倍数

    第二次作业 题目:求两个正整数的最大公约数和最小公倍数. 基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出. 提高要求:1.三种以上算法解决两个正整 ...

  8. C语言求最小公倍数和最大公约数三种算法(经典)

    C语言求最小公倍数和最大公约数三种算法(经典) 最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数,同样地,若干个整数公有的倍数中最小的正整数称为 ...

  9. c语言 最大公约数 最小公倍数的编程,C语言三种算法求解最大公约数与最小公倍数...

    C语言三种算法求解最大公约数与最小公倍数 最大公约数与最小公倍数的求解是很多初学C的人所面临的一道问题.当然这道问题并不难解答,也有很多人已经写过相关的博客,我在此书写此篇博客,一是为了让自己能够夯实 ...

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

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

最新文章

  1. 驰骋工作流引擎的流程属性-节点属性-前台操作
  2. 搜索专题:bfs和dfs
  3. 动态ip如何做域名解析?
  4. java-抽象类和接口对区别
  5. 从石头剪刀布浅谈算法的作用
  6. Spring基础系列-AOP源码分析
  7. java ssh 连接mysql数据库_Java通过ssh连接访问数据库
  8. 程序员,从培训班出来的都是垃圾!!!?
  9. 安卓手机使用VNET抓包京东wskey
  10. kafka-eagle 使用配置及远程jmx端口设置遇到的问题
  11. 【LTE基础知识】GUTI(Globally Unique Temporary UE Identity)分配
  12. 2020大疆秋招笔试题B卷
  13. word ppt中设置TAB缩进量
  14. Mybatis中resultMap和resultType
  15. linux系统如何下游戏,海岛纪元干货 在Linux系统下如何畅玩游戏攻略
  16. python pop() ,如何在Python的列表或数组中移除元素
  17. A. Ela Sorting Books codeforces 1737A
  18. 离散数学笔记和物联网工程导论笔记
  19. 转换 JSON API 用 Chopper 和 JsonSerializable
  20. 天创速盈:简单步骤,教你开设网店

热门文章

  1. UDS(统一诊断服务)的理解——0x19服务
  2. 状态码406解决方式
  3. linux 文件 内容 并集,Linux 两个文件求交集、并集、差集
  4. 搜狗输入法弹出搜狗新闻的解决办法
  5. 时钟的同步与异步问题
  6. pulseaudio如何开通系统日志来debug
  7. entrez搜索SRA数据库info
  8. 基于Python实现的基金交易系统
  9. 《程序员》5月刊精彩内容预告
  10. PLC是什么?它的作用是什么?