用C语言递归求最大公约数

[c语言]用辗转相除法求最大公约数,递归和不递归两种 在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... 阅读详情
初学递归接触的就是什么汉诺塔问题,足够经典;但是之前用辗转相除法求最大公约数是不是不够方便?用递归实现代码简单;而且思路也简单:
int  f(int m,int n){
	if(m%n == 0)return n;
	else
		return f(n,m%n);
}

这是关键代码,f是函数,在函数内又调用自身;是不是很简单!

全部代码:

#include<stdio.h>
void swap(int *m,int *n){
	int t;
	if(m < n){
		t = n;
		n = m;
		m = t;
	}
}
int  f(int m,int n){
	if(m%n == 0)return n;
	else
		return f(n,m%n);
}
int main(){
	int p = 0,m = 0,n = 0;
	printf("请按照由大到小的顺序输入两个整数,用空格隔开:\n");
	scanf("%d%d",&m,&n);
	swap(m,n);
	p = f(m,n);
	printf("两个数的最大公约数是:%d\n",p);
	return 0;
}
因为参数必须要第一个比第二个大,所以还要有个交换函数,这样就可以保证参数的正确性了,哈哈!
别再死记硬背GNN公式了!用PyTorch Geometric从零实现一个GraphSAGE(附完整代码) 本文通过PyTorch Geometric从零实现GraphSAGE模型,深入解析图神经网络的核心原理与实战应用。文章提供完整代码示例,涵盖环境配置、邻居采样、信息聚合等关键步骤,帮助开发者掌握图表示学习技术,避免陷入公式推导的困境。适合希望将GNN应用于实际项目的中级开发者和学生。 阅读详情

相关推荐

ADSP-21565的SigmaStudio图形化编程实战:从FW工程改造到音频通道打通

本文详细介绍了如何将ADSP-21569的SigmaStudio图形化编程固件工程改造,以适配ADSP-21565的纯片内SRAM内存架构。通过修改内存映射和链接文件,打通了音频输出通道,并成功利用SigmaStudio进行图形化编程,实现了从白噪声生成到音频输出的完整验证流程。

weixin_29169505的博客 380

c语言递归求最大公约数

求两个正整数m和n的最大公约数。 输入样例1: 6 8 输出样例1: 2 //递归求最大公约数 #include<stdio.h> int f(int a,int b) { //比大小,确定被除数和除数 //a为被除数,b为除数 if(b>a) { int temp = b; b = a; a = temp; } //进行求余的判断 if(a%b==0) return b; //递归 //a接收b的值,b结束余数的值 else ret.

weixin_46507557的博客 6012

运动目标成像必学:5分钟搞懂keystone变换原理与避坑指南

本文深入浅出地解析了雷达信号处理中的Keystone变换原理,它是解决运动目标距离徙动问题的关键技术。文章通过直观比喻和简化公式,阐述了该变换如何通过变量代换实现距离与慢时间的解耦合,将倾斜轨迹“掰直”,从而提升成像与检测性能。同时,文中重点指出了实际应用中关于大速度场景、插值误差、多目标处理及高阶运动补偿等关键避坑点,为工程实践提供了宝贵指南。

ios99的博客 403

C语言用递归求最大公约数

直接上代码: #include<stdio.h>//用递归求最大公约数 int gcd(int m,int n)//定义两个整型变量 { if(m%n==0) return n; else return gcd(n,m%n);//这一步相当于把除数变为被除数,余数变为除数 } void main() { int x,y; printf("请输入两个整数:"); scanf("%d%d",&x,&y); printf("所输入两数的最大公约数为%d",gc

weixin_62146828的博客 5104

CameraLink接口详解:从引脚定义到信号传输

本文详细解析了CameraLink接口的物理连接与信号传输机制。从MDR26连接器的引脚定义与镜像关系入手,深入讲解了BASE与MEDIUM模式下的信号映射、LVDS差分传输原理,并强调了屏蔽层处理与端接电阻等关键硬件设计细节。文章结合实战经验,提供了常见图像传输问题的排查思路,是工业视觉领域高速图像传输的实用指南。

weixin_28318011的博客 888

cuda2 but found one of them on device cuda 0

cuda2 but found one of them on device cuda 0 上面问题的重点是,不是cpu和gpu之间的常规问题,而是出现在不同gpu之间的数据。 出问题地方: model = nn.DataParallel(model, device_ids=[2,4]) 先说解决方法: 方案一: model = nn.DataParallel(model, device_ids=[0,2,4]) 前面一定要给一个0的序号,如果0被别人占了呢? 方案二: os.environ["CUDA_

binqiang2wang 665

求最大公约数的4种方法C语言(辗转相除法、辗转相减法、穷举法、递归法)

最大公约数,也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。 问题描述 随机输入两个数,求其最大公约数 辗转相除法(欧几里得算法) 辗转相除法依赖于一个定理: 两个整数的最大公约数等于其中较小的那个数和两数取模的最大公约数。 即:gcd (x , y) = gcd (y , x % y ) ,其中 x > y。 代码实现 递归法 计算最大公约数gcd(m,n),用递归形式定义如下: 若m%n等于0,则gcd(m,n)等与n 否..

kim的博客 1万+

直流有刷电机控制 - 驱动电路(二)

1.如图所示为最常见的推挽驱动电路,我附加了具有正反转功能的电机驱动控制,正反转是由两个继电器组成。使用推挽电路来驱动NMOS管时充电电流和放电电流都很大,因此NMOS管导通快,关断也快,而且NMOS温度不会很高。下面来介绍一下该电路的原理。(1)PWM_MCU是由单片机给出的PWM波信号,该信号是由一些列高低电平的方波构成。当信号为高电平的时候Q3导通,经过R47再到Q5的g极,此时mos导通,如果是K1闭合是正转那么K2闭合就是反转。(2)当PWM低电平时使得Q3关断,Q6导通。

u011030644的博客 4720

C语言:递归求最大公约数

【代码】C语言:递归求最大公约数。

m0_64391998的博客 1285

Agentic-Desktop-Pet:构建本地智能桌面助手的架构与实践

智能体(Agent)作为人工智能领域的重要概念,是指能够感知环境、自主决策并执行任务以实现目标的软件实体。其核心原理在于结合感知、决策与执行模块,通过大语言模型(LLM)等推理引擎处理信息并驱动行动。这种架构的技术价值在于将AI的认知能力与具体的操作系统环境深度融合,从而创造出能主动理解用户上下文、提供个性化服务的智能伙伴。在应用场景上,智能体技术正从云端对话机器人向本地化、场景化的桌面助手演进,旨在解决传统自动化工具缺乏智能、而纯聊天机器人脱离操作环境的问题。本文探讨的Agentic-Desktop-Pe

weixin_27210125的博客 623

FlexSim:FlexSim软件介绍与安装

在开始安装FlexSim之前,首先需要从FlexSim官方网站下载安装包。FlexSim提供不同版本的软件,包括教育版、专业版等,确保选择适合您需求的版本。下载页面通常会列出系统要求,包括操作系统、处理器、内存和硬盘空间,确保您的计算机满足这些要求。访问FlexSim官方网站。导航至下载页面。选择适合您需求的FlexSim版本。点击下载按钮,开始下载安装包。在开始构建模型之前,首先需要明确模型的目标。模型目标是指导模型设计和分析的核心,它定义了你希望通过模型解决的问题或探索的系统行为。

kkchenjj的博客 5803

C语言求最大公约数(递归)

辗转相除法 int gcd(int a,int b) { if(a%b==0) { printf("%d",b); return 0; } gcd(b,a%b); } #include <stdio.h> int main() { int a=24,b=10,i; if(a<b) //用辗转相除法要保证a>b { i=a; a=b; b=i; } gcd(a,b); } 如程序中的24和10 24(a)%10(b)=4 10(b)%4(a%b)=2 4(a%b)%2(b%(a

a921599047的博客 3303

【完整梳理验证】企业微信第三方应用接入全流程java版

由企业内部的开发者自己开发部署,相当于是企业自己的资产,调用接口基本没有任何限制。由SaaS服务商的开发者开发并部署在服务商侧,面向所有企业。需要企业授权使用(先试用后付费),服务商仅可获取企业授权部分的权限,相当于白名单控制。由服务商的开发者开发,但部署在企业内部。一般是线下签约采购方式,因此权限几乎与自建应用无异,企业管理员只需要配置不对服务商开放的敏感权限,相当于黑名单控制。服务商后台地址:企业微信服务商官网企业管理后台地址:企业微信管理后台服务商,可以理解为 SAAS 中的运营端。企业管理端,可以理

Hello, New World! 2760

C语言| 递归求两个数的最大公约数

3 如果余数不为0,则用较小的数除以上一步计算出的余数,直到余数为0。此时,上一步的余数即为这两个数的最大公约数。printf("m=%d,n=%d,它们的最大公约数为%d\n", m, n, ZDGYS(m,n));2 用较大的数除以较小的数,如果余数为0,则较小的数即为这两个数的最大公约数。数学上求解两个数的最大公约数有多种方法,包括辗转相除法、相减法、穷举法等。1 取两个数中较大的数作为除数,较小的数作为被除数。printf("请输入m,n的值:");

qq_40555264的博客 686

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

求最大公约数(递归)(C语言)

【题目描述】从键盘任意输入两个正整数,求这两个数的最大公约数。要求使用递归的方法完成。【输入样例】24 36【输出样例】12代码实现#include//使用递归方法完成求最大公约数unsigned int t[100]={1},i=0;unsigned GetGreatestCommonDivisor(unsigned int x,unsigned int y){ if(t[i]==0)return t[i-1]; else { if(x>y) ...

weixin_62788105的博客 1241

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C语言用递归方法求最大公约数

运行结果:

ypy544的博客 586

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C语言函数及数组的综合应用——儿童数学运算 and 递归求最大公约数

C语言综合实验3函数及数组的综合应用 一、实验目的:二、实验要求三、代码部分1.儿童数学运算2.超长数相乘计算总结 一、实验目的: (1) 学习和掌握 C 语言函数的定义与调用。 (2) 进一步掌握随机数、选择结构、循环控制、交互式输入输出等程序设计方法。 (3) 进一步掌握 C 语言中的数组定义和引用方法。 (4) 学习和掌握根据流程图进行模块化程序设计的思想。 二、实验要求 一、儿童数学运算 (1)定义一个函数。该函数有两个整型的输入参数 randNum1 和 randNum2,其 中,randNu

不知何人的小屋 3233

C语言递归求最大公约数

C语言递归求最大公约数

2403_89117570的博客 192

python递归以及c语言递归实现求最大公约数(补充上文)

前面已经写过了欧几里得算法(即辗转相除法)c语言的写法,今天用python和c的递归来实现辗转相除法 需注意:python代码中当输入999和991时,会造成互质现象 ##输入M和N M = int(input()) N = int(input()) M1 = M N1 = N if M < N: M , N = N , M //比较M N大小并进行交换 R = M % N while R != 0: M = N N = R R = M % N if N !=1

ZZRBlogger的博客 3025

c语言 递归 求公约数,递归求最大公约数

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。#include "iostream"#include "cmath"using namespace std;//一个数和0的最大公约数就是这个数本身//a / b = q + r => gcd(a,b) = gcd(b,r)int gcd(int a,int b){int r = a ...

weixin_29220405的博客 1399

C语言——用递归求最大公约数超简洁版

这道题比较简单,实现也不难,那我们追求的是什么呢?诶 其实就是简洁啦 下面上代码: #include<stdio.h> #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) int getGCD(int a,int b){ return a == b ? a : getGCD(min(a,b),max(a,b)-min(a,b)); } int main(void){ int a,b; sc

m0_55728779的博客 1215

c语言:递归求最大公约数

#include using namespace std; int gcd(int x,int y) {    if(x%y==0)     return y;    else     return gcd(y,x%y); } int main() {     int a,b,g;     cin>>a>>b;     g=gcd(a,b);

zhangquanwei0605的博客 4546

C语言——欧几里德算法求最大公约数——的递归实现方式

这段代码的功能是计算并输出两个数的最大公约数。用户需要在程序运行时输入两个数字,然后程序通过调用app函数来计算这两个数字的最大公约数,并将结果输出给用户。 这段代码是一个完整的求解两个整数的最大公约数的程在主函数中,首先定义了两个整数变量a和b,然后通过scanf函数从用户输入中读取这两个数字。 接下来,调用app函数来计算最大公约数,将结果保存在sum变量中。 最后,使用printf函数输出最大公约数的值。 这段代码可以正常运行,并根据用户输入的两个数字计算它们的最大公约数,并将结果输出

weixin_66547608的博客 1476

C语言实现 递归法求最大公约数

#include #include int main() { int pc(int x,int y); int m,n; scanf("%d %d",&m,&n); printf("%d ",pc(m,n)); return 0; } int pc(int x,int y) { int z; z=x%y; if(z==0)

键盘上的舞者 2255

求两个正整数的最大公约数(递归/非递归)

C版本 方法一: #include"stdio.h" int main() { int x,y,t=1;//求x,y的最大公约数 scanf("%d%d",&x,&y); for(int i=2;i<=x&&i<=y;i++) { if(x%i==0&&y%i==0) { x=x/i; y=y/i; t=t*i;/

qq_43776544的博客 6060

C语言实现用递归求正整数 a 和 b 最大公约数(辗转相除法)

【代码】C语言实现用递归求正整数 a 和 b 最大公约数(辗转相除法)

m0_71709382的博客 697
下一篇: jsp代码重用
lhttq
博客等级 码龄9年 47粉丝 18原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值