用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;
}
因为参数必须要第一个比第二个大,所以还要有个交换函数,这样就可以保证参数的正确性了,哈哈!
9、横向束流光学:原理、模拟与耦合效应 本文系统介绍了横向束流光学中的关键概念,包括色度、色散、发射度、动量压缩因子以及四维耦合效应。通过MATLAB代码详细演示了相关参数的计算与模拟流程,展示了粒子在加速器中的运动特性及其对束流稳定性的影响。同时,讨论了如何通过磁铁配置优化束流光学性能,为加速器的设计与优化提供了理论基础和实践指导。 阅读详情

相关推荐

【Codex安装使用手册】

Codex安装部署使用教程

qq_43392230的博客 4962

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

深入解析EtherCAT通讯DS402协议下的伺服电机控制模式选择与配置

本文深入解析了EtherCAT通讯DS402协议下的伺服电机控制模式选择与配置,详细介绍了六种核心控制模式(如PPM、CSP、CSV、CST)的应用场景及实战技巧。通过EtherCAT和DS402协议的高效配合,实现工业自动化中伺服电机的精准控制,提升设备性能与稳定性。

h0i1j2k3l的博客 1174

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

基于MediaPipe的智能俯卧撑计数与姿势矫正系统

在现代健身和体能训练中,俯卧撑是最基础也是最有效的自重训练动作之一。然而,许多人在进行俯卧撑训练时常常存在姿势不正确、计数不准确等问题。本文将介绍如何利用计算机视觉和姿态估计技术,开发一个智能的俯卧撑计数与姿势矫正系统。

qq_36224726的博客 916

win10安装openvpn客户端

进入C:\Program Files\TAP-Windows\bin目录,然后右键用管理员权限执行addtap.bat文件,此文件执行会创建一个网卡。链接:https://pan.baidu.com/s/1KAifTiP7qp1i5ZkfdnfwkA。4.2 进入安装目录的config下新建一个文件夹,将证书文件全部挪进去(不移动.ovpn文件)3.4 将拿到的ssl认证文件放入安装目录的config目录下。然后修改ovpn文件 “./”代表当前路径,第二个链接重复。3.1 一直下一步到这里打上勾。

qq_36200932的博客 3万+

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

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

kim的博客 1万+

nsight-system教程

参考nsight-compute使用教程-优快云博客。

youzjuer的博客 1894

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

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

m0_64391998的博客 1285

【AI编程】Qoder AI 编程工具从部署到深度使用实战详解

Qoder AI 编程工具从部署到深度使用实战详解

congge 8339

十三种通信接口芯片——《器件手册--通信接口芯片》

通信接口芯片用于实现差分信号的传输,具有抗干扰能力强、传输距离远等优点。RS485支持多点通信,可连接多个收发器,而RS422支持单向多点通信。广泛应用于工业自动化、过程控制、仪器仪表、楼宇自动化(如暖通空调、保安系统)、电机控制等领域。ST3485EBDRTP8485ESR用于实现串行通信,支持点对点通信,传输距离相对较短,数据速率较低。常用于计算机与外设(如打印机、调制解调器)之间的通信。如芯力特的SIT3232,可作为ST3232的替代品。

XU157303764的博客 4273

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

(四) OpenClaw-Skill技能全面了解和自定义技能

OpenClaw Skills是提升AI代理功能性的关键模块。本文系统介绍了Skills的核心概念、获取渠道和创建方法。Skills作为标准化指令集合,能让OpenClaw从单纯理解升级为实际执行任务,相比传统System Prompt具有模块化、可复用等优势。用户可通过Clawhub官方商店、GitHub社区等渠道获取5700+现成技能,或按需开发自定义Skill。文章详细演示了创建"Hello World"示例技能的完整流程,包括编写Python脚本、配置SKILL.md文件、部署。

直到世界的尽头 8295

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

求最大公约数(递归)(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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

运行结果:

ypy544的博客 586

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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、付费专栏及课程。

余额充值