当前位置: 首页 > news >正文

递归求最大公约数

#include <stdio.h>// 函数声明
int gcd(int a, int b);int main() {int x, y;printf("请输入两个正整数:");scanf("%d %d", &x, &y);printf("最大公约数是:%d\n", gcd(x, y));return 0;
}// 递归求最大公约数
int gcd(int a, int b) {return b == 0 ? a : gcd(b, a % b);
}

这种方法可以求最大公约数,因为它基于欧几里得算法(Euclidean algorithm),这是一种古老而高效的算法,用于计算两个整数的最大公约数(GCD)。欧几里得算法的核心思想是:两个整数的最大公约数与较小数和两数相除余数的最大公约数相同。

这里是欧几里得算法的基本原理:

1. 基本情况:如果其中一个数变为0,那么另一个数就是最大公约数。因为任何数和0的最大公约数都是它本身。

2. 递归步骤:对于任意两个正整数`a`和`b`(假设`a > b`),它们的最大公约数与`b`和`a % b`(`a`除以`b`的余数)的最大公约数相同。这是因为`a`可以表示为`a = bq + r`,其中`q`是商,`r`是余数。那么`a`和`b`的公约数也必定是`b`和`r`的公约数。

3. 重复应用:通过不断重复这个过程,直到其中一个数变为0,另一个数就是最大公约数。

这个算法之所以有效,是因为它利用了除法的性质和最大公约数的定义。每次递归调用实际上是在缩小问题的规模,直到达到基本情况。:

以一个具体的例子来说明:

假设我们要计算48和18的最大公约数

1. `48`和`18`的最大公约数与`18`和`48 % 18`(即`48`除以`18`的余数,也就是`12`)的最大公约数相同。
2. 然后我们计算`GCD(18, 12)`,这与`12`和`18 % 12`(即`6`)的最大公约数相同。
3. 接着计算`GCD(12, 6)`,这与`6`和`12 % 6`(即`0`)的最大公约数相同。
4. 由于其中一个数现在是`0`,算法终止,另一个数`6`就是`48`和`18`的最大公约数。

相关文章:

递归求最大公约数

#include <stdio.h>// 函数声明 int gcd(int a, int b);int main() {int x, y;printf("请输入两个正整数&#xff1a;");scanf("%d %d", &x, &y);printf("最大公约数是&#xff1a;%d\n", gcd(x, y));return 0; }// 递归求最大公约…...

关于在浏览器里面获取手机方向的事件

先说问题&#xff1a;浏览器有一个自带原生的获取手机方向的事件方法 deviceorientation: https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent 这个事件里面有个实例absolute 看名字知道意思吧&#xff0c;对就是绝对坐标的意…...

STM32 出租车计价器系统设计(一) 江科大源码改写

STM32 出租车计价器系统设计 功能目标 驱动步进电机模拟车轮旋转&#xff0c;并实现调速功能。 设置车轮周长和单价&#xff0c;检测车轮转速和运转时间。 计算并显示行驶里程和价格。 硬件材料 28BYJ48 五线四相步进电机和 ULN2003 驱动板模块 测速传感器模块 嵌入式小系统…...

eclipse rcp-创建rcp-创建target

1.创建一个target文件&#xff0c;将其命名为mine-rcp.target 2. 编辑target 2.1 点击add按钮&#xff0c;选中software site 2.2 选择一个software site 打开浏览器。 选择一个合适的eclipse作为基础版本。进入https://download.eclipse.org/eclipse/downloads/https://dow…...

微信小程序--创建一个日历组件

微信小程序–创建一个日历组件 可以创建一个日历组件&#xff0c;来展示当前月份的日期&#xff0c;并支持切换月份的功能。 一、目录结构 /pages/calendarcalendar.wxmlcalendar.scsscalendar.jscalendar.json二、calendar.wxml <view class"calendar"><…...

质量问题分析与改进常见方法

大同小异&#xff0c;本质都是定位、解决、推广三大步双归零 技术归零五条要求&#xff1a;“定位准确、机理清楚、问题复现、措施有效、举一反三”。 管理归零五条要求&#xff1a;“过程清楚、责任明确、措施落实、严肃处理、完善规章”。 航天FRACASFRACAS &#xff0c;是“…...

质数的和与积

质数的和与积 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 两个质数的和是S&#xff0c;它们的积最大是多少&#xff1f; 输入 一个不大于10000的正整数S&#xff0c;为两个质数的和。 输出 一个整…...

数据结构 (35)分配类排序

前言 分配类排序是数据结构中的一种重要排序方法&#xff0c;其核心思想是利用分配和收集过程对元素进行排序&#xff0c;而无需比较元素之间的关键字。这种方法突破了基于关键字比较的排序算法的时间下界&#xff0c;可以达到线性时间复杂度O(n)。 一、分配类排序的基本概念 分…...

Cesium隐藏默认控件

终于有时间开始整理下知识点了。 开搞 本地环境 vue3vitecesiumvite和cesium都是最新版本这里有个问题需要注意&#xff0c;就是如何为Cesium配置Vite&#xff0c;随便检索一下&#xff0c;大部分都时通过插件【vite-plugin-cesium】作为解决方案&#xff0c;我本地创建新的示…...

Spark SQL 执行计划解析源码分析

本文用于记录Spark SQL执行计划解析的源码分析。文中仅对关键要点进行提及&#xff0c;无法面面具到&#xff0c;仅描述大体的框架。 Spark的Client有很多种&#xff0c;spark-sql&#xff0c;pyspark&#xff0c;spark- submit&#xff0c;R等各种提交方式&#xff0c;这里以…...

rabbitMq举例

新来个技术总监&#xff0c;把 RabbitMQ 讲的那叫一个透彻&#xff0c;佩服&#xff01; 生产者 代码举例 public String sendMsg(final String exchangeName,final String routingKey,final String msg) {} /*** 发送消息* param exchangeName exchangeName* param routin…...

奇怪的知识又增加了:ESP32下的Lisp编程=>ULisp--Lisp for microcontrollers

ESP32下有MicroPython&#xff0c;那么我就在想&#xff0c;有Lisp语言支持吗&#xff1f;答案是果然有&#xff01;有ULisp&#xff0c;专门为MCU设计的Lisp&#xff01; 网址&#xff1a;uLisp - Lisp for microcontrollers 介绍&#xff1a;用于微控制器的 Lisp 适用于 Ar…...

渗透测试之信息收集

免责声明&#xff1a;使用本教程或工具&#xff0c;用户必须遵守所有适用的法律和法规&#xff0c;并且用户应自行承担所有风险和责任。 文章目录 1. 基础信息收集2. 网络资产发现3. 网站和应用信息4. 技术栈识别5. 安全漏洞和配置6. 移动应用分析7.Google语法常见Google使用场…...

基本分页存储管理

一、实验目的 目的&#xff1a;熟悉并掌握基本分页存储管理的思想及其实现方法&#xff0c;熟悉并掌握基本分页存储管理的分配和回收方式。 任务&#xff1a;模拟实现基本分页存储管理方式下内存空间的分配和回收。 二、实验内容 1、实验内容 内存空间的初始化——可以由用户输…...

SQLServer到MySQL的数据高效迁移方案分享

SQL Server数据集成到MySQL的技术案例分享 在企业级数据管理中&#xff0c;跨平台的数据集成是一个常见且关键的任务。本次我们将探讨如何通过轻易云数据集成平台&#xff0c;将巨益OMS系统中的退款单明细表从SQL Server高效、安全地迁移到MySQL数据库中。具体方案名称为“7--…...

软考:工作后再考的性价比分析

引言 在当今的就业市场中&#xff0c;软考&#xff08;软件设计师、系统分析师等资格考试&#xff09;是否值得在校学生花费时间和精力去准备&#xff1f;本文将从多个角度深入分析软考在不同阶段的性价比&#xff0c;帮助大家做出明智的选择。 一、软考的价值与局限性 1.1 …...

shell编程(完结)

shell编程&#xff08;完结&#xff09; 声明&#xff01; 学习视频来自B站up主 ​泷羽sec​​ 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其…...

UNIX数据恢复—UNIX系统常见故障问题和数据恢复方案

UNIX系统常见故障表现&#xff1a; 1、存储结构出错&#xff1b; 2、数据删除&#xff1b; 3、文件系统格式化&#xff1b; 4、其他原因数据丢失。 UNIX系统常见故障解决方案&#xff1a; 1、检测UNIX系统故障涉及的设备是否存在硬件故障&#xff0c;如果存在硬件故障&#xf…...

adb连接逍遥安卓模拟器失败的问题解决方案

1、逍遥安卓模拟器进入系统应用&#xff0c;设置-关于平板电脑-版本号&#xff0c;连续点击3次以上&#xff0c;直到提示进入开发者模式&#xff0c;返回设置界面&#xff0c;进入【开发者选项】-【USB调试】开启&#xff0c;之后重启模拟器再次adb尝试连接。 2、android stud…...

【昇腾】NPU ID:物理ID、逻辑ID、芯片映射关系

起因&#xff1a; https://www.hiascend.com/document/detail/zh/Atlas%20200I%20A2/23.0.0/re/npu/npusmi_013.html npu-smi info -l查询所有NPU设备&#xff1a; [naienotebook-npu-bd130045-55bbffd786-lr6t8 DCNN]$ npu-smi info -lTotal Count : 1NPU…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...