当前位置: 首页 > 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…...

告别“积木式”构建:RH Claw 实现 OpenClaw AIGC全模态能力一令直达

在2026年数字员工浪潮的推动下&#xff0c;开源框架OpenClaw&#xff08;小龙虾&#xff09;已进化为构建Agent的核心底层。而智能体进化的下一步&#xff0c;必然是执行力的全维度突破。因此&#xff0c;卓越的AIGC图形音视频工作流开发和API服务平台RunningHub正式发布RHClaw…...

通过一级后,下一步该学什么?

恭喜你通过C++一级考试!这是一个重要的里程碑。 但一级只是起点,不是终点。 今天我为你规划了下一步的学习路线。 通过一级后,你有3个方向可以选择 方向1:继续考二级(推荐) 适合人群: 想要系统学习C++的学生 对编程感兴趣,想深入学习的孩子 计划参加信奥赛的学 原因…...

Git-RSCLIP图文相似度应用:构建遥感知识图谱支撑语义推理与关联分析

Git-RSCLIP图文相似度应用&#xff1a;构建遥感知识图谱支撑语义推理与关联分析 1. 引言&#xff1a;从“看图说话”到“知图懂意” 想象一下&#xff0c;你面前有一张从几百公里高空拍摄的卫星图像。上面有蜿蜒的线条、不同颜色的色块、规则或不规则的几何图形。你能看出什么…...

4维突破:开发者必备的GitHub网络加速方案

4维突破&#xff1a;开发者必备的GitHub网络加速方案 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub GitHub作为全球最大的开源代码…...

Mos:macOS鼠标滚动终极优化的全场景适配解决方案

Mos&#xff1a;macOS鼠标滚动终极优化的全场景适配解决方案 【免费下载链接】Mos 一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A lightweight tool used to smooth scrolling and set scroll direction independently for yo…...

大龙虾OpenClaw的token不够吃了?用免费的 APIKey 续命

大龙虾OpenClaw的token不够吃了&#xff1f;用免费的 APIKey 续命 前言 最近一直在玩 OpenClaw 的朋友应该都有同感&#xff1a;大龙虾跑得越欢&#xff0c;Token 烧得越快&#xff0c;刚部署没多久就提示额度不足&#xff0c;想继续用就得充值&#xff0c;对个人开发者太不友…...

大数据架构版本控制:代码化基础设施

大数据架构版本控制:代码化基础设施 关键词:大数据架构、版本控制、基础设施即代码(IaC)、CI/CD流水线、数据管道管理、DevOps实践、分布式系统配置 摘要:本文深入探讨如何通过代码化手段实现大数据架构的版本控制,将基础设施配置、数据管道定义、集群参数等核心组件纳入…...

效率提升:基于快马平台构建智能mc指令管理器,一键优化游戏流程

作为一个《我的世界》的深度玩家兼偶尔的模组开发者&#xff0c;我深知指令&#xff08;Commands&#xff09;是游戏里最强大的工具&#xff0c;没有之一。它能让你瞬间传送、批量建造、改变游戏规则&#xff0c;实现各种天马行空的想法。但问题也随之而来&#xff1a;指令手册…...

解决brew安装慢问题

用 brew 安装软件慢&#xff0c;通常是因为默认的官方源服务器在国外。解决的核心思路就是将默认源替换为国内的镜像源。对于2025年的新版 Homebrew&#xff0c;有一个关键的新步骤需要留意。 &#x1f4a1; 核心原因 Homebrew 慢主要是因为它的核心仓库和软件包&#xff08;Bo…...

每日算法练习:LeetCode 169. 多数元素 ✅

大家好&#xff0c;我是你们的算法小伙伴。今天我们来练习一道经典的数组问题 ——LeetCode 169. 多数元素&#xff0c;它的最优解法「摩尔投票法」非常巧妙&#xff0c;是面试中的高频考点。题目描述给定一个大小为 n 的数组 nums&#xff0c;返回其中的多数元素。多数元素是指…...