题目:

题目:输入两个正整数m和n,求其最大公约数和最小公倍数

算法分析

辗转相除法

辗转相除法是古希腊求两个正整数的最大公约数的算法,也叫欧几里德算法,其方法是用较大的数除以较小的数,上面较小的除数和得出的余数构成新的一对数,继续做上面的除法,直到出现能够整除的两个数,其中较小的数(即除数)就是最大公约数。以求136和93的最大公约数为例,操作如下:

168/93=1 ……75

93/75=1……18

75/18=4……3

18/3=6

所以3就是168和93的最大公约数

遍历法

主要代码(辗转相除法)

void fun(int m,int n){int a,b,t;if(m<n){//先将较大的数放到m里面t=m;m=n;n=t;}a=m;b=n;//让a等于较大的数,让b等于较小的数while(b!=0){//利用辗转相除法,直到余数b为零结束t=a%b;a=b;b=t;}printf("最大公约数是:%d\n",a);printf("最小公倍数是:%d\n",m*n/b);
}

主要代码(遍历法)

void fun2(int m,int n){int x=1,y;//最大公约数x设置为1,最小公倍数yint min,max;int i;min=m>n?n:m;max=m>n?m:n;if(max%min==0){//两个数是倍数关系printf("最大公约数:%d\n最小公倍数:%d\n",min,max);} else{//不成倍数//寻找最大公约数for(i=1;i<=min;i++){//从1找到minif(max%i==0 && min%i==0) x=i;}while(max%m!=0 || max%n!=0){//当有一方不能被整除时,继续往后找max++;}y=max;printf("最大公约数:%d\n最小公倍数:%d\n",x,y);}
}

今日巩固

  1. 辗转相除法(欧几里德算法)的学习和使用
  2. 对于两个数的换位置,可以使用昨天刚巩固的条件运算符的使用
  3. while循环与for循环的区别与使用

每日程序C语言10-欧几里德算法相关推荐

  1. 每日程序C语言5-斐波那契兔子数

    每日程序C语言 题目 古典问题,有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后又生一对兔子,假如兔子都不死,问每个月的兔子总数是多少? 算法分析 兔子的对数符合斐波那契数列 斐 ...

  2. 每日程序C语言2-判断某日期是这一年的第几天

    每日程序C语言 题目: 输入某年某月某日,判断这一天是这一年的第几天? 程序分析: 闰年和平年的算法,用二维数组来存储月份和天数 核心代码 void fun(int year,int month,in ...

  3. 每日程序C语言3-三个数大小排序

    每日程序C语言 题目 输入三个数,按照从小到大的顺序输出 算法分析 在三个数中找出最小的数 比较剩下两个数的大小 依次输出 代码 void sort(int x,int y,int z){if(x&g ...

  4. 第 14 章 程序员常用 10 种算法

    第 14 章 程序员常用 10 种算法 1.二分查找算法 1.1.二分查找算法介绍 前面我们讲过了二分查找算法,是使用递归的方式,下面我们讲解二分查找算法的非递归方式 二分查找法只适用于从有序的数列中 ...

  5. 程序员必读10本算法书推荐

    算法可以说是学习编程时关键要掌握的技能之一,但是算法的"难"却吓退了很多人.有人学算法更多是为了通过面试,但是很多人没有意识到算法在提高编程技能方面,也起着很大的作用.实际上,无论 ...

  6. 无聊博文之:用同余的语言阐述欧几里德算法

    下面用同余的语言来阐述欧几里德算法.对于整数$a$和正整数$b$,我们知道 \begin{equation} \label{eq:11.16} a=q_1b+r_1(q_1\geq 0,0\leq r ...

  7. 夸奖人的C语言小程序,c语言10个经典小程序

    [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. ...

  8. 每日程序C语言26-直接选择排序

    题目: 对10个数进行排序(1)-直接选择排序 程序分析 直接选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n^2)的时间复杂度,所以一般用在数据规模较小的时候,这个算法唯一的优点就是不占 ...

  9. 插入法排序c语言程序,C语言之插入排序算法

    一.什么是直接插入算法? 直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列. 选择 ...

最新文章

  1. 那些年 一场游戏 一场梦
  2. 关于程序员的那些事——一个五年程序员的总结
  3. 机器学习 LR中的参数迭代公式推导——极大似然和梯度下降
  4. 【Linux 内核 内存管理】Linux 内核内存布局 ② ( x86_64 架构体系内存分布 | 查看 /proc/meminfo 文件 | /proc/meminfo 重要字段解析 )
  5. react 项目实战(三)表单验证
  6. springboot报错---@RunWith(SpringRunner.class)
  7. sql注入pythonpoco_.NET EF(Entity Framework)详解
  8. mysql 忘记root密码的解决办法
  9. [19/04/29-星期一] GOF23_行为型模式(责任链模式、迭代器模式)
  10. 重学前端学习笔记(四十一)--CSS的颜色
  11. 理工科硕士自学ICEM网格划分的思考和感悟
  12. Ubuntu20.04安装输入法
  13. 嵌入式课程设计第一篇之OLED与温湿度模块
  14. Qt随机数生成器:QRandomGenerator
  15. “黑盒”下的攻击实现,真实世界的“人脸识别”遭遇危险!
  16. EditPlus字体放大方法
  17. 怎么把avi文件转换成mp4视频格式,4个高能方法
  18. iterator 的遍历 循环输出数字,页码
  19. PXE 网络安装 windows 或 linux
  20. html改变单选形状,用css实现html中单选框样式改变

热门文章

  1. 11-1 操作系统概念
  2. spring boot api文档_精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用
  3. sap模块介绍_SAP系统操作指南.doc
  4. 基层数字化治理困境如何破局?
  5. 独家下载!2021前端热门技术解读
  6. 确保您的物联网部署具备5G功能
  7. 登录form php一个页面跳转页面,Extjs4中表单登录功能、登录成功跳转页面的代码...
  8. 塔防游戏的路径寻找算法分析
  9. GameMaker Studio 中的组合技(Combo)设置
  10. 搭载「光线追踪」技术的次时代主机会有怎样的画面表现?