最大公约数(递归与非递归)

欧几里得算法求最大公约数的递归和非递归实现 递归定义必须是有明确含义,是指必须一步比一步简单,最终是有终结的,绝不能无限循环下去 所有的递归函数都能找到对应的非递归定义 递归的性能相对于非递归来说,并没有性能上的优势,实际上,有时候使用循环的性能更好。如果使用循环,程序的性能可能更高,如果使用递归,程序可能更容易理解。如何选择要看什么对你更重要   第一种,用于计算gcd(m,n)的欧几里得算法(递归) 举个例子来简单的解释一下欧... 阅读详情

时间限制:1 秒

内存限制:32 兆

特殊判题:否


题目描述:

输入两个正整数,求其最大公约数。

输入:

测试数据有多组,每组输入两个正整数。

输出:

对于每组输入,请输出其最大公约数。

样例输入:
49 14
样例输出:

算法分析

采用辗转相除法。设有A,B两个数符合求取最大公约数,则 result = A % B,如果 result 不是最大公约数,则 A = B,B = result 循环求解,有最大公约数即结束程序。

结果分析

最大公约数求解中,递归方法比非递归方法效率高,递归方法编译时间为0.45-0.55 seconds;非递归方法编译时间为1.15-1.17 seconds

#include<stdio.h>
#include<stdlib.h>

int gcd(int a,int b){
     if(b==0)
        return a;
     else
        return gcd(b,a%b);
     }
int main(){
    int a,b;
    while(~scanf("%d%d",&a,&b))
    {
      printf("%d\n",gcd(a,b));
             
    }
    return 0;
    }


/*
*最大公约数计算(非递归方法) 
*/
#include <iostream>
using namespace std;
int main()
{
	int  m, n, temp ;
	while(cin>>m>>n)
	{
		while(n != 0)
		{
			m = m%n;
			temp = n;
			n = m;
			m = temp;
		}
		cout<<m<<endl;
	}
	return 0;

}







【递归】求最大公约数(函数) 上机内容:C++程序的编写和运行 上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程 我的程序:/* Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者:赵玲玲 * 完成日期:2013 年 11 月 25 日 * 版 本 号:v1.0 * 输入描述: 40 36 * 阅读详情

相关推荐

[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...

ZZRBlogger的博客 1万+

求两整数的最大公约数(多种方法)

求两个数的最大公约数

m0_73528660的博客 2179

(递归)最大公约数

题目: f(x,y)f(x,y)f(x,y)={f(y,x%y),(y&gt;0)x,(y=0)\left\{\begin{matrix} &amp; f(y,x\% y),(y&gt;0) \\ &amp; x,(y=0) \end{matrix}\right.{​f(y,x%y),(y>0)x,(y=0)​ 输入:第一行一个整数t(t ≤100...

及时总结 725

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

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

从PWM到精准电流:双光耦与LM317构建的4-20mA隔离输出方案

本文详细介绍了基于双光耦与LM317的4-20mA隔离输出方案,适用于工业自动化中的PWM信号转换。该方案通过电气隔离和精准电流调节,显著提升抗干扰能力和信号传输精度,同时降低成本60%。文章还分享了电路设计、参数计算及调试经验,为工程师提供实用参考。

weixin_32006655的博客 281

Halcon实战:5种边缘检测算子对比(Sobel、Roberts、Prewitt、Kirsch、Canny)

本文深入对比了Halcon中Sobel、Roberts、Prewitt、Kirsch和Canny五大边缘检测算子的实战表现与核心差异。通过工业图像实例与代码解析,提供了基于噪声水平、边缘连续性及实时性要求的场景化选型指南,帮助工程师精准选择最适合的算子以优化视觉检测流程。

weixin_29266007的博客 391

刷题记录04—HDOJ

最大公约数问题 欧几里得算法 欧几里得算法也叫辗转相除法,是求两个整数最大公约数的算法。 当然也可以求最小公倍数。 算法实现 其实算法的实现原理就是,有整数a b两个,每次求的一个数字r = a % b,然后把b放到a的位置,把r放到b的位置,递归调用。 就是gcd(a, b) { return gcd(b, a%b); }这个样子的。 结束条件是当 a%b == 0的时候停止。 参考:https://blog.youkuaiyun.com/alps1992/article/details/44689575

YKQCC的博客 207

Java使用easyExcel生成excel文件直接写入邮件附件并发送

1.引入pom依赖 <!-- email --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <!-- easyexcel需要依赖poi jar包 --> <depe

weixin_50493320的博客 3909

求最大公约数(非递归法)

/* *copyright(c)2013,烟台大学计算机学院 *ALL right reserved. *作者:王凯 *完成日期:2013年11月25日 *版本号:v1.0 *问题描述:求最大公约数(非递归法) *样例输入:12 24 *样例输出:12 *问题分析:求最大公约数(非递归法) */ #include using namespace st

u012368962的专栏 1835

计算机网络Wireshark实验(西安交通大学)

实验名称 计算机网络Wireshark实验 实验日期 2021 年 5 月 17 日 实验地点 XJTU

沉鱼叶的博客 1814

【20】方案管理器

方案管理器是Excel中一个非常强大且灵活的工具,适合用于多情景分析和比较。在复杂的决策过程中,它可以帮助用户快速管理和评估不同变量组合下的结果,从而优化决策过程。

学习,输出==》再学习再输出 1585

递归算法5——简单递归之求最大公约数

用递归函数求两个整数M和N的最大公约数。 【分析】 两个整数M和N的最大公约数具有以下性质: code: #include<stdio.h> #include <iostream> int gcd(int m, int n); void main() { int m, n; printf("请输入两个正整数:"); scanf("%d,%d", &amp...

凌空的桨 8635

基于GEC6818开发板+Linux+Qt设计的智能养老院出入管理系统(195)

当前,传统的养老院出入管理模式普遍存在信息更新滞后、数据统计繁琐、实时监控能力不足等问题,难以满足现代养老机构对安全管理与服务质量提升的需求。本系统设计正是针对这些问题,通过集成先进的硬件设备如高性能GEC6818开发板以及RFID刷卡模块,结合稳定高效的嵌入式Linux操作系统和QT开发框架,构建一套功能齐全、操作直观、响应迅速的智能出入管理系统。 该系统能自动记录并实时显示老人的进出时间,方便管理人员及时了解每位老人的活动轨迹,同时具备强大的后台管理功能,支持管理员便捷地进行老人信息的增删改查操作。通

1069

递归求最大公约数

#include &lt;stdio.h&gt; int gcd(int a,int b) { if(a&lt;=0 || b&lt;=0) return 0; //如果传进来的参数小于0则返回0 if(a%b==0) return b; //如果b能被a整除则b就是最大公约数 else gcd(b,a%b); ...

inshixu的博客 4万+

uv pip install时出现error: Request failed after 3 retries 解决方案

本文主要介绍了uv pip install时出现error: Request failed after 3 retries解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 方法一 2.2 方法二

weixin_43178406的博客 12万+

机床上位机实战:CNC设备数据采集+工艺参数存储全流程(附C#代码+SQL设计)

如果能正常输出转速和状态,说明通信通了——这步是基础,没通的话别往下走,先查CNC的IP对不对、Modbus功能有没有开、地址是不是错了(我当初卡了2小时,发现是Fanuc的Modbus从站地址设成了2,不是默认1)。这篇文章就把整个开发过程拆透:从CNC通信协议选型,到数据采集代码落地,再到工艺参数的数据库设计,连中间踩过的“Fanuc系统寄存器地址对应错”“断连后数据补传”这些坑都给大家说清楚,新手跟着做也能跑通。工艺参数要跟“工单”和“设备”绑定,不然查的时候不知道是哪个工单、哪台设备的参数。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 791

用递归法求最大公约数(递归)

递归

善良的小乔的博客 1万+

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

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

求最大公约数递归转非递归

求最大公约数递归转非递归 #include using namespace std; typedef struct RecordType{ int m; int n; int h; int addr; }RecordType; const int StackMaxSize=20; typedef struct Stack{ RecordType s[StackMaxSize]; int top;...

ocean_this_is_it的博客 347

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

递归方法实现最大公约数

最大公约数最大公约数最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中的一个、、、等接下来我们以辗转相除法为例子来求两个数的最大公约数。

m0_53619602的博客 1657

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

初学递归接触的就是什么汉诺塔问题,足够经典;但是之前用辗转相除法求最大公约数是不是不够方便?用递归实现代码简单;而且思路也简单:int f(int m,int n){ if(m%n == 0)return n; else return f(n,m%n); }这是关键代码,f是函数,在函数内又调用自身;是不是很简单!全部代码:#include&lt;stdio.h&gt; void swa...

lhttq的博客 2万+

欧几里得最大公约数——递归与非递归

欧几里得算法求最大公约数——递归与非递归 题目描述 输入两个正整数,求其最大公约数。 输入: 测试数据有多组,每组输入两个正整数。 输出: 对于每组输入 ,请输出其最大公约数。 样例输入: 49 14 样例输出: 7 题目算法解释 我们把求 a、b 的最大公约数转换成了求 b、a mod b 的最大公约数, 那么问题不变而数据规模则明显变小,我们可以不断重复该过程,直到问题缩小 成求某个非零数与零...

xyzxyzxyz1999的博客 686

递归法非递归求最大公约数

递归法非递归求最大公约数

m0_51310361的博客 412

【一本通】用递归方法求两个数m和n的最大公约数

用递归方法求两个数m和n的最大公约数。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 4756

C++ 最大公约数(递归与非递归)

最大公约数 两个整数的最大公约数是这两个数可以同时整除的最大整数。 实现代码 #include&lt;iostream&gt; using namespace std; int gcd(int , int);//最大公约数函数原型(非递归) int gcd2(int , int);//函数原型(递归) int main(){ int num1, num2; cout &lt;&lt;...

alone_cat的博客 3521

最大公约数计算-非递归 最大公约数计算-递归 Python123题解

编写函数计算两个数据m和n的最大公约数(不使用递归)‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 算法:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 1.对于已知两数m,n,使得m>n;‪‬‪‬‪‬‪‬‪‬

qq_61661717的博客 2026
上一篇: 第二周习题(四)
下一篇: 木瓜移动沈思:从学生时代到创业始终相信笨鸟先飞
橘子局
博客等级 码龄14年 70粉丝 84原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值