辗转相除法求两数的最大公约数

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

1.最大公约数也叫最大公因数、最大公因子
2.记法:a,b两数最大公约数记为(a, b),对应两数最小公倍数记为[a, b];
3.求最大公约数常见方法:质因数分解法、短除法、辗转相除法(又叫欧几里得算法)、更相减损法

这里重点介绍辗转相除法求两数的最大公约数,总结一句话就是:
用除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数。

例子:求1997 和 615 两个正整数的最大公约数
1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
至此,最大公约数为1

用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。

c语言代码实现

#include<stdio.h>
//非递归的实现
int getGCD(int a, int b)	//a被除数, b除数,q余数 
{
	int q;
	q = a%b;
	while(q>0)
	{
		a = b;
		b = q;
		q = a%b;
	}
	return b;	
}
//递归实现
int gcd1(int a, int b)
{
	a = a%b;
	return a==0 ? b:gcd1(b, a);
}
//更简洁的递归实现
int gcd2(int a, int b)
{
	return b==0 ? a:gcd2(b, a%b);
}
int main()
{
	int m, n;
	scanf("%d %d", &m,&n);
	printf("%d", gcd1(m, n)); 
}
辗转相除法求两数的最大公约数(C语言) 辗转相除法求两数的最大公约数 /* m = 12(被除数) n = 8(除数) r = 4(余数) m = 8  n = 4  r = 4 m = 4  n = 4  r = 0 两数的最大公约数 n = 4 */ #include <stdio.h> int main(){ int num1, num2,r =0; scanf("%d%d", &num1, &num2); while (r = num1%num2){ //取其变量值或算数运算后的值,0为fal 阅读详情

相关推荐

别再折腾CUDA了!Win11上VSCode一键配置PyTorch GPU环境(附Anaconda虚拟环境避坑指南)

本文提供Win11系统下使用VSCode和Anaconda一键配置PyTorch GPU环境的详细指南,解决CUDA版本冲突等常见问题。通过conda的原子化依赖解决方案,安装时间从2小时缩短至15分钟,适合深度学习初学者快速搭建开发环境。

weixin_33101399的博客 248

详解“辗转相除法”(如何求最大公约数)

辗转相除法是用于求两个非负整数的最大公约数的高效方法这种方法可以不用去计算两个数谁大谁小,这样能够提高运算效率具体还是看我上面的手绘图加深一下理解。

C_Small_Cai的博客 1万+

torch.jit.script 与 torch.jit.trace

它们是 PyTorch 的即时编译(Just-in-Time Compilation)模块的一部分,用于提高模型的执行效率并支持模型的部署。方法只跟踪了给定输入张量的执行路径,因此在使用转换后的模块对象进行推理时,输入张量的维度和数据类型必须与跟踪时使用的相同。跟踪模型可以看作是一个具有相同功能的脚本模型,但它还保留了原始模型的动态特性,可以使用更多高级特性,如动态图和控制流。它接受一个模型和一个示例输入,并记录模型在给定输入上的执行过程,然后返回一个跟踪模型。的模型文件,并将其转换为评估模式。

leoatliang的博客 1万+

利用辗转相除法——求最大公约数(详解)

辗转相除法 求最大公约数: 给定两个数,求这两个数的最大公约数 欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。 例如:假如需要求 100 和18 两个正整数的最大公约数,用欧几里得算法,是这样进行的: 100 / 18 = 5 (余 10) 18 / 10= 1(余8) 10 / 8 = 1(余2) 8 / 2 = 4 (余0) 至此,最大公约数为2 以除数和余数反复做除法运算,当余数为 0

H48530的博客 8万+

双传声器法测量吸声材料的吸声系数(公式推导与解释)

在双传声器法中,通过测量两个位置的声压 p1和 p2​,可以分离出入射波和反射波的声压分量。双传声器法一般在阻抗管中进行,阻抗管的一端为平面波声源,另一端放置待测材料。两个传声器放置在靠近材料的阻抗管内,用于测量管道内的声压。双传声器法是一种常用于测量材料吸声系数的实验方法,通过在管道内使用两个传声器测量声波的入射和反射,来计算出材料的吸声系数。当测试样品较少时,测试时,需要交换两个传声器的位置,目的是为了相位校准。

m0_57407372的博客 1875

用野火FPGA开发板(EP4CE10)手把手教你实现一个高精度频率计(附完整Verilog代码)

本文详细介绍了基于野火FPGA开发板(EP4CE10)实现高精度频率计的全过程,涵盖等精度测量法的核心原理、Verilog代码实现及优化技巧。通过实际案例演示,帮助开发者掌握1Hz-50MHz范围、精度达0.1%的频率计设计方法,并提供完整的工程代码和实测数据。

weixin_29261711的博客 440

【算法】辗转相除法求最大公约数

辗转相除法,又称欧几里德算法(Euclidean Algorithm),是求两个数的最大公约数(greatestcommondivisor)的一种方法。用较大的数除以较小的数,再以除数和余数反复做除法运算,当余数为0时,取当前算式除数为最大公约数。

Qiuhan_909的博客 6万+

烧录代码显示:no st-link 和Targrt DLL has been cancelled,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1580

辗转相除法——求最大公约数(易懂详解)

辗转相除法——求最大公约数(易懂详解)

weixin_64188098的博客 4万+

在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测

本文将详细介绍如何在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测,并提供实现源码

DT程序员的博客 706

(五)激光线扫描-位移台标定

线激光属于主动测量方式,但是由于线激光的特性,我们只能通过提取激光中心线获取这一条线上的高度信息,那么要进行三维重建的话,就需要通过平移或者是旋转的方式,来让线激光扫描被测物体的完整轮廓,也就是整个表面。激光线的密度越高还原出来的物体越细腻,但由于数据量大,也会导致速度变慢。下面以位移台为例讲解,如何标定位移台。

FlyWine的博客 2891

C语言实现求两数的最小公倍数和最大公约数(辗转相除法)

最大公约数:对于两个或多个整数(非零),能同时整除它们的最大正整数。记作GCD(a,b)示例:GCD(15, 25) = 5,因 此5 是同时整除 15 和 25 的最大整数。最小公倍数:对于两个或多个正整数,能同时被它们整除的最小正整数,记作LCM(a, b)示例:LCM(4, 6) = 12,因 12 是同时被 4 和 6 整除的最小正整数。

2503_92739857的博客 1566

YOLO11改进 | 注意力机制 | 添加SimAM注意力机制【全网独家+附完整代码】

yolo11,yolo11改进,yolo11创新,yolo11添加注意力机制

kay_545 1230

Java实现:最大公约数计算。从键盘接收两个整数,编写程序求出这两个整数的最大公约数和最小公倍数(提示:求最大公约数可用辗转相除法,求最小公倍数则用两数的积除以最大公约数即可)。

最大公约数计算 从键盘接收两个整数,编写程序求出这两个整数的最大公约数和最小公倍数(提示:求最大公约数可用辗转相除法,求最小公倍数则用两数的积除以最大公约数即可)。 实现代码如下: import java.util.Scanner; public class test03 { public static void main(String[] args) { System.o...

HeiSQ的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

求两数的最大公约数和最小公倍数三种方法(定义,辗转相除法与实用方法)

求两数的最大公约数和最小公倍数三种方法(定义,辗转相除法与实用方法)

Change_Jerry的博客 4295

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

辗转相除法求两数的最大公约数(递归实现)

辗转相除法求两数的最大公约数(递归实现) 最大公约数定义:如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。   辗转相除法(也叫欧几里德算法)原理: 早在公元前300年左右,欧几里得就在他的著作《几何原本》中给出了高效的解法——辗转相除法。辗转相除法使用到的原理很聪明

古怪 5127

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

使用辗转相除法和递归思想求两数最大公约数

辗转相除法 欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) => gcd(b,a mod b)。 算法简介 欧几里得算法是用来求两个正整数最大公约数的算法。(因为被欧几里得发明所以叫欧几里得算法) 扩展:欧几里得算法可用于RSA加密等领域。 假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的: 1997 / 615 = 3 (余 152) 615 / 152 = 4(余7) 15

李的博客 5418

辗转相除法求两数最大公约数

辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。 例如,求(319,377): ∵ 319÷377=0(余319) ∴(319,377)=(377,319); ∵ 377÷319=1(余58) ∴(377,319)=(319,58); ∵ 319÷58=5(余29) ∴ (319,58)=(58,29); ∵ 58÷29=2(余0) ∴ (58,29)= 29; ∴ (319,3...

weixin_43772880的博客 267

解题—求两数的最大公约数与最小公倍数 #辗转相除法

(a,b)-->求 a,b 的最大公约数(a,b) 本质原理:a/b=q…r如果有两个整数a,b 便会存在唯一的一个整数q和r,满足式子 a/b=q...r 经过上面图形的启发,我们可得知:(a,b)=(b,r) 如何验证这个公式呢? 由a/b=q…r,可得a=b*q+r;以及r=a-b*q; 假设(a,b) = d1; 则可以得到 a= d1*m,b=d1*n,其中(n,m)=1,即m与n 互质;存在n与m均属于整数那么可知:r=d1*m -di*n*q= d1(m-ng);

Distinguished_z的博客 4733

用辗转相除法求两数最大公约数

/* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院 * All rightsreserved. * 文件名称:xx.cpp * 作 者:赵加响 * 完成日期:2013年11月22日 * 版 本 号: v1.0 * 输入描述:两个正整数 * 问题描述:用辗转相除法求两数最大公约数 * 程序输出:两数最大公约数 * 问题分析:略

u012369106的专栏 1518

C语言求两数最大公约数(辗转相除法)

求两个数的最大公约数。

2301_79744389的博客 1214

【C语言】辗转相除法求两数中的最大公约数

相较于枚举法求最大公因数,辗转相除法的时间复杂度相对较低,为O(logN)。

qq_74660726的博客 1253

利用辗转相除法求两数的最大公约数和最小公倍数(附源码)

输入两个正整数m和n, 求其最大公约数和最小公倍数. 用辗转相除法求最大公约数 算法描述: m对n求余为a, 若a不等于0 则 m 否则 n 为最大公约数 最小公倍数 = 两个数的积 / 最大公约数   关于辗转相除法, 搜了一下, 在我国古代的《九章算术》中就有记载,现摘录如下: 约分术曰:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等

changli_90的专栏 1万+

【C语言】求两数的最大公约数【辗转相除法】

【代码】【C语言】求两数的最大公约数【辗转相除法】

m0_74369876的博客 279
上一篇: 【PAT乙级1012】——数字分类
下一篇: 四舍五入与进一法
StevenAC
博客等级 码龄10年 16粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值