当前位置: 首页 > news >正文

E12.【C语言】练习:求两个数的最大公约数

1.枚举 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int a = 0;int b = 0;int tmp = 0;scanf("%d %d", &a, &b);if (a < b){for (int i=1; i < a; i++){if (0==a% i  && 0==b%i)tmp = i;}}if (a>b){for (int i = 1; i < b; i++){if (0 == b % i && 0 == a % i)tmp = i;}}if (a = b)tmp = a;printf("%d", tmp);return 0;
}

注意i不能从0开始否则有Integer division by zero报错,即整数除以零

但是代码可以进一步简化:

输入两个数-->找出最小数-->从最小数开始:从大向小找,一旦找到就是最大公约数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int a = 0;int b = 0;int tmp = 0;scanf("%d %d", &a, &b);if (a > b)tmp = b;elsetmp =a;while (1)//一直循环{if (0 == a % tmp && 0 == b % tmp){printf("%d", tmp);break;}tmp--;}return 0;
}

2.辗转相除法 

定义:先用较大的数除以较小的数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。此时的除数就是所求的最大公约数。

18%24=18-->24%18=6-->18%6=0-->6是最大公约数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int a = 0;int b = 0;int tmp = 0;scanf("%d %d", &a, &b);while (tmp=a%b)//循环,m%n=0退出{a = b;b = tmp;}printf("%d", b);return 0;
}

最小公倍数=a*b/最大公约数 

 

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java实现堆排序算法详解及优化
  • JavaWeb(三:JDBC 与 MVC)
  • iOS热门面试题(四)
  • ARM学习(29)NXP 双coreMCU IMX1160学习----NorFlash 启动引脚选择
  • gin源码分析
  • fortran简单排序算法,对一维、二维矩阵进行正序或倒序排序
  • 【深度学习】PyTorch深度学习笔记02-线性模型
  • 百度安全大模型智能体实践入选信通院“安全守卫者计划”优秀案例
  • 专业条码二维码扫描设备和手机二维码扫描软件的区别?
  • 【Java--数据结构】栈:不仅仅是数据存储,它是编程的艺术
  • Docker 容器出现 IP 冲突
  • 深度加速器 为游戏而生
  • 【ARM】CCI缓存一致性整理
  • [论文笔记]RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL
  • 【LeetCode】2187. 完成旅途的最少时间
  • 2017前端实习生面试总结
  • Java 内存分配及垃圾回收机制初探
  • Lsb图片隐写
  • maven工程打包jar以及java jar命令的classpath使用
  • miaov-React 最佳入门
  • Python socket服务器端、客户端传送信息
  • tensorflow学习笔记3——MNIST应用篇
  • 从零开始的无人驾驶 1
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 扑朔迷离的属性和特性【彻底弄清】
  • 用Python写一份独特的元宵节祝福
  • MPAndroidChart 教程:Y轴 YAxis
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 我们雇佣了一只大猴子...
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #Linux(帮助手册)
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (1)Hilt的基本概念和使用
  • (solr系列:一)使用tomcat部署solr服务
  • (补)B+树一些思想
  • (超详细)语音信号处理之特征提取
  • (规划)24届春招和25届暑假实习路线准备规划
  • (一一四)第九章编程练习
  • (转)ABI是什么
  • (转)setTimeout 和 setInterval 的区别
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .Net MVC4 上传大文件,并保存表单
  • .Net 基于MiniExcel的导入功能接口示例
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET委托:一个关于C#的睡前故事
  • .Net小白的大学四年,内含面经
  • @Query中countQuery的介绍
  • [000-01-018].第3节:Linux环境下ElasticSearch环境搭建
  • [2544]最短路 (两种算法)(HDU)
  • [AIGC] Java List接口详解
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn