[c语言]用辗转相除法求最大公约数,递归和不递归两种

求两个整数的最大公约数的各种算法(C语言实现)       求两个整数的最大公约数有两种算法——辗转相减法和辗转相除法,这两种算法的思想差不多,就是让这两个整数不断的减去最大公约数的倍数。辗转相减法的结束条件是这两个整数相等,此时这两个数的值就是最大公约数。辗转相除法的结束条件是两个数取模等于零,即一个数能整除另一数时,此时较小的数就是最小公约数。我用递归和非递归分别实现的这两种算法。程序采用C语言实现,已经在visual C++6.0上运行通过了,代码不是很简练,与大家分享学习经验了!#include /*返回两个整数的最大公约数--辗转相减法递归实现 阅读详情

在c语言的学习中必然会遇到求两个数之间的最大公约数的题目,那么对于其他经典方法,最简便快捷的方式就是利用辗转相除法

辗转相除法又叫做欧几里得算法,目的是为了求两个正整数的最大公约数

定理:gcd(a,b) = gcd(b ,a%b)     //在这里用(a,b)表示a和b的最大公约数
证明:a可以表示成a = kb + r,则r = a % b
假设d是a,b的一个公约数,则有
d|a, d|b,而r = a - kb,因此d|r    //这里的"|"的意思是 :d是b的因数 ,d是a的因数
因此d是(b,a%b)的公约数
假设d 是(b,a%b)的公约数,则
d | b , d |r ,但是a = kb +r            //同上意思
因此d也是(a,b)的公约数
因此(a,b)和(b,a%b)的公约数是一样的,其最大公约数也必然相等,得证 

或许看不太懂,那么举个例子看看?

求 (495,319)=
解    495➗319=1......176 
        319➗176=1.......143
        176➗143=1........33
        143➗33=4.........11
         33➗11=3..........0 
即可得出 (495,319)=11 相当完美,理论成立 那么回归代码应该如何写呢?

#include 
【C语言】辗转相除法求最大公约数(详解) 辗转相除法是求解两个整数的最大公约数的一种常见算法。本文中,我们使用C语言实现了辗转相除法,并简要说明了其原理。通过实际的代码演示和运行结果,我们验证了辗转相除法的正确性。希望能够帮助到你理解该算法的实现过程。 阅读详情

相关推荐

【C语言】实现求两个数的最大公约数【四种算法】

题目 给定两个数,求这两个数的最大公约数 例如: 输入:20 40 输出:20 解题思路 最大公约数:即两个数据中公共约数的最大者 求解的方式比较多,暴力穷举、辗转相除法、更相减损法、Stein算法算法 方法一:辗转相除法(推荐此方法) 思路: 例子:18和24的最大公约数 第一次:a = 18 b = 24 c = a%b = 18%24 = 18 循环中:a = 24 b=18 第二次:a = 24 b = 18 c = a%b = 24%18 = 6 循环中:a = 18 b

Edison's 小宇宙 9万+

求最大公约数(C语言)

2、如果a不能被b整除,则gcd(a,b) = gcd(b,a%b),令c=a%b,带入第一步,得gcd(a,b) = gcd(b,c);以上介绍了辗转相除法、更相减损法和质因数分解法三种常见的求解最大公约数的方法,它们各有优缺点,适用于不同的场景。3、质因数分解法的实现也相对简单,但是效率较较低,适用于数据规模较小或需要分解质因数的情况。2、更相减损法的理解较为容易,但是递归次数较多,效率略低,适用于数据规模较小的情况。1、辗转相除法的时间复杂度低,实现简单,适用于大多数情况,是一种较为通用的方法。

ikun10001的博客 1624

C/C++ 求最大公约数GCD算法详解及源码

最大公约数(GCD)是指能够同时被两个或多个整数整除的最大正整数。求最大公约数的算法有多种,以下介绍辗转相除法和更相减损术两种最常用的算法。该算法的优点是不涉及除法运算,可以避免除法运算的一些性能问题,但是在减法过程中可能出现大数减小数的情况,导致算法效率低下。该算法的优点是简单易懂,且计算速度较快。但是对于两个较大的整数来说,使用递归实现会有栈溢出的风险。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 8325

手把手教你用WF100DPZ数字压力传感器搞定I2C/SPI通信(附完整寄存器解析)

本文详细解析了WF100DPZ数字压力传感器的I2C与SPI通信驱动方法,涵盖硬件连接、寄存器配置、数据读取流程及常见问题排查。该传感器内置24位ADC和出厂校准,通过实战代码演示了如何稳定获取高精度压力与温度数据,帮助开发者快速集成到嵌入式项目中。

weixin_28285943的博客 375

docker安装fastdfs+nginx配置

docker安装fastdfs+nginx,实现图片或文件的上传与下载

weixin_47325126的博客 2191

PX4无人机offboard开发之旅

(慢慢更)无人机OFFBOARD开发

InTereSTingHE的博客 1078

普冉PY32F002B ADC内部参考电压VREFINT的误差补偿与低功耗优化实践

本文详细介绍了普冉PY32F002B单片机在锂电池供电场景下ADC内部参考电压VREFINT的误差补偿与低功耗优化实践。通过分析GPIO配置、分压电阻匹配、采样时间设置等硬件设计要点,结合实时测量VREFINT电压值和软件补偿算法,有效提升了ADC测量精度至5mV以内,并实现了分压电路功耗控制与采样频率优化,为低成本消费电子项目提供了完整的解决方案。

846

SenseVoice 实测,阿里开源语音大模型,识别效果和效率优于 Whisper,居然还能检测掌声、笑声!5分钟带你部署体验

阿里开源语音大模型:语音识别效果和性能强于 Whisper,还能检测掌声、笑声、咳嗽等

u010522887的专栏 4万+

课题申报书成功率提升85%!借助大模型AI精准选题、搭综述框架及提炼创新点(附实操AI提示词)

写一份高质量的课题申报书往往面临许多困难,对很多同仁来说,难就难在:选题既要新又要能落地,文献综述要结构清晰还得有观点,研究目标要写得有逻辑还不能夸大,创新点必须得新。而且就算你有思路,也卡在怎么组织语言,怎么压缩字数上。现在我们用ChatGPT等AI工具,可以帮我们从“选题策划 → 综述撰写 → 目标拆解 → 创新提炼 → 团队结构”实现申报工作的全流程,我们要做的就是设计好提示词和收集相关资料。这篇文章将会从申报工作的六个核心模块出发,并给出参考AI提示词,帮你快速提升课题申报效率。

智能AI让学术科研更容易 906

智能温室:温室环境监测_(7).土壤监测技术包括pH值和电导率

土壤的pH值是指土壤溶液的酸碱度,它对植物的营养吸收和生长发育有着重要的影响。在智能温室中,土壤监测是非常重要的一个环节,因为土壤的pH值和电导率直接影响植物的生长和健康。本节将详细介绍如何利用传感器和数据处理技术来监测土壤的pH值和电导率,并提供具体的代码示例。在智能温室中,监测到的土壤pH值和电导率数据需要传输到中央控制系统进行进一步的处理和分析。通过以上步骤,您可以构建一个完整的智能温室土壤监测系统,实时监控土壤的pH值和电导率,确保植物在最佳的生长环境中。校准通常包括在已知电导率的标准溶液中进行。

zhubeibei168的博客 1408

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

下一篇: 10月15日星期五区区周结
ZZRBlogger
博客等级 码龄5年 10粉丝 8原创
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值