蓝桥java求最大公约数

一. 什么是最大公约数(GCD)

最大公约数(Greatest Common Divisor)是指两个或多个整数共有约数中最大的一个。例如:

  • 12 和 18 的公约数有 1, 2, 3, 6,其中最大的是 6

  • 所以 gcd(12, 18) = 6

二. 方法一:辗转相除法(欧几里得算法)

1.这是最经典的求最大公约数的方法,基于以下原理:

两个数的最大公约数等于较大数除以较小数的余数较小数的最大公约数

gcd(a, b) = gcd(b, a % b)

其中 a % b 表示 a 除以 b 的余数。

2.举个例子

求 gcd(12, 18)

  1. gcd(12, 18) = gcd(18, 12) // 先确保第一个数大

  2. 18 ÷ 12 = 1 余 6

  3. gcd(18, 12) = gcd(12, 6) // 应用公式

  4. 12 ÷ 6 = 2 余 0

  5. gcd(12, 6) = gcd(6, 0)

  6. 当第二个数为0时,第一个数就是答案:6

三.现在看代码的详细解释

方法1.1:循环实现

public static int gcd1(int a, int b) { // 确保a >= b if (a < b) { int temp = a; // 临时变量保存a的值 a = b; // 把b的值赋给a b = temp; // 把原来a的值赋给b } // 执行到这里,a一定是较大的数,b是较小的数 // 辗转相除 while (b != 0) { // 当b不等于0时继续循环 int remainder = a % b; // 求a除以b的余数 a = b; // 把b的值赋给a b = remainder; // 把余数赋给b } return a; // 当b=0时,a就是最大公约数 }

用例子走一遍:计算 gcd1(12, 18)

  1. 输入 a=12, b=18

  2. 因为 12 < 18,交换:a=18, b=12

  3. 进入while循环:

    • 第一次循环:b=12≠0

      • remainder = 18 % 12 = 6

      • a = 12

      • b = 6

    • 第二次循环:b=6≠0

      • remainder = 12 % 6 = 0

      • a = 6

      • b = 0

    • 第三次:b=0,退出循环

  4. 返回 a=6

方法1.2:递归实现

public static int gcd2(int a, int b) { if (b == 0) { // 终止条件:当b=0时 return a; // a就是最大公约数 } return gcd2(b, a % b); // 递归调用:用(b, a%b)继续计算 }

递归的思考方式

  1. 把大问题分解成小问题

  2. 每次递归都让问题变小一点

  3. 直到遇到最简单的情况(b=0)

用例子走一遍:计算 gcd2(12, 18)

  1. 第一次调用:gcd2(12, 18)

    • b=18≠0,不返回a

    • 调用 gcd2(18, 12%18) 即 gcd2(18, 12)

  2. 第二次调用:gcd2(18, 12)

    • b=12≠0

    • 调用 gcd2(12, 18%12) 即 gcd2(12, 6)

  3. 第三次调用:gcd2(12, 6)

    • b=6≠0

    • 调用 gcd2(6, 12%6) 即 gcd2(6, 0)

  4. 第四次调用:gcd2(6, 0)

    • b=0 ✓

    • 返回 a=6

  5. 结果层层返回:6 ← 6 ← 6 ← 6


四.再看测试代码

public static void main(String[] args) { int a = 12; int b = 18; // 测试两种方法 System.out.println("gcd1(" + a + ", " + b + ") = " + gcd1(a, b)); System.out.println("gcd2(" + a + ", " + b + ") = " + gcd2(a, b)); // 更多测试 System.out.println("\n更多测试:"); System.out.println("gcd(24, 36) = " + gcd2(24, 36)); // 应该是12 System.out.println("gcd(17, 13) = " + gcd2(17, 13)); // 两个质数,应该是1 System.out.println("gcd(100, 0) = " + gcd2(100, 0)); // 一个数为0,应该是100 }

理解:

辗转相除法就像"以大换小"的游戏

  1. 用大数除以小数,得到余数

  2. 原来的小数变成新的"大数"

  3. 余数变成新的"小数"

  4. 重复直到余数为0

  5. 最后的小数就是答案

用 gcd(12, 18) 来说:

开始:大=18, 小=12
18 ÷ 12 = 1 余 6 → 新大=12, 新小=6
12 ÷ 6 = 2 余 0 → 余数为0,停止
答案就是最后的小数:6

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1160022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥java求最大公约数

一. 什么是最大公约数&#xff08;GCD&#xff09;最大公约数&#xff08;Greatest Common Divisor&#xff09;是指两个或多个整数共有约数中最大的一个。例如&#xff1a;12 和 18 的公约数有 1, 2, 3, 6&#xff0c;其中最大的是 6所以 gcd(12, 18) 6二. 方法一&#xff1a…

基于SpringBoot+Vue汽车租赁管理系统的设计与实现

博主主页&#xff1a;一点素材 博主简介&#xff1a;专注Java技术领域和毕业设计项目实战、Java微信小程序、安卓等技术开发&#xff0c;远程调试部署、代码讲解、文档指导、ppt制作等技术指导。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬…

程序启动地址0x80000000

一般用的板子是32位的&#xff0c;那么可寻址范围也就是4GB&#xff0c;即芯片可以访问这4GB地址&#xff0c;那么这些地址就可以对应到芯片的寄存器上&#xff0c;按照惯例&#xff0c;通常CPU对DDR&#xff08;外部ram&#xff09;的寄存器定义为0x80000000&#xff0c;而运行…

基于SpringBoot+Vue的汽车租赁系统设计与实现

博主主页&#xff1a;一点素材 博主简介&#xff1a;专注Java技术领域和毕业设计项目实战、Java微信小程序、安卓等技术开发&#xff0c;远程调试部署、代码讲解、文档指导、ppt制作等技术指导。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬…

学霸同款2026 AI论文网站TOP10:专科生毕业论文必备测评

学霸同款2026 AI论文网站TOP10&#xff1a;专科生毕业论文必备测评 2026年AI论文网站测评&#xff1a;为专科生量身打造的高效写作指南 随着人工智能技术在学术领域的不断渗透&#xff0c;越来越多的专科生开始借助AI工具辅助论文写作。然而&#xff0c;面对市场上五花八门的AI…

基于霜冰优化算法改进LSSVM多输入单输出回归预测附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

企业AI Agent的可视化配置界面:降低使用门槛

企业AI Agent的可视化配置界面:降低使用门槛 关键词:企业AI Agent、可视化配置界面、降低使用门槛、AI技术应用、配置效率 摘要:本文围绕企业AI Agent的可视化配置界面展开,旨在探讨如何通过这一界面降低企业使用AI Agent的门槛。首先介绍了相关背景,包括目的范围、预期读…

一分钟看透:深圳所有机器人公司

1. 人形机器人与具身智能&#xff08;当下最火&#xff0c;适合你的运控/LLM背景&#xff09;序号公司名称核心业务&#xff08;10字内&#xff09;公司地址&#xff08;补齐与精确化&#xff09;1优必选 (UBTECH)商业化双足人形机器人南山区学苑大道1001号南山智园 C1 栋2乐聚…

AI原生视频生成:打破传统界限

AI原生视频生成:打破传统界限 关键词:AI原生视频生成、扩散模型、神经辐射场(NeRF)、多模态理解、内容创作革命 摘要:本文将带你走进AI原生视频生成的世界,从技术原理到实际应用,用“给小学生讲故事”的方式拆解这一颠覆性技术。我们将探讨它如何突破传统视频制作的成本…

水稻收获机电控系统方案详解

水稻收获机分为半喂入收割机和全喂入收割机&#xff0c;用于田间完成水稻收割、脱粒、分离等作业&#xff0c;可在平原、丘陵、梯田等不同地形作业。 水稻收获机电控系统方案详解&#xff1a; 硕博电子水稻收获机电控系统是以SPD-101-H1x系列显示屏和SPC-SFMC-X2212A控制器为核…

Redis 集群在大数据分布式处理中的应用实践

Redis 集群在大数据分布式处理中的应用实践 关键词&#xff1a;Redis 集群、大数据、分布式处理、分片存储、高可用、一致性哈希、缓存优化 摘要&#xff1a;在大数据时代&#xff0c;海量数据的高效存储与低延迟访问是技术挑战的核心。Redis 作为内存数据库的“速度之王”&…

提示系统架构演进中的“成本优化”:提示工程架构师的省钱技巧

提示系统架构演进中的“成本优化”&#xff1a;提示工程架构师的省钱技巧 引言 背景介绍 在当今数字化飞速发展的时代&#xff0c;提示系统广泛应用于各类软件和服务中&#xff0c;从简单的移动应用提示到复杂的企业级智能助手提示&#xff0c;它为用户提供了便捷的引导和信息传…

基于SSM框架的智能密室逃脱信息管理系统(源码+论文+部署+安装)

感兴趣的可以先收藏起来&#xff0c;还有在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望可以帮到大家。一、程序背景行业发展现状&#xff1a;体验式消费理念普及推动密室逃脱行业爆发式增长&#xff0c;门店数…

2026百度云不限速_百度网盘下载加速

百度网盘下载限速怎么破解这个很简单&#xff0c;这个方法我还是在我朋友那里找到的。下载速度也是非常夸张。我让大家看一下这个就是我测试的速度。速度还是非常夸张的。下面开始今天的教学环节打开上面图片中左上角的地址&#xff0c;你会看到一个获取文件列表按钮&#xff0…

Linux计划任务进程

一&#xff0c;常用命令&#xff08;1&#xff09;查看进程&#xff1a;ps• a&#xff1a;显示当前终端下所有信息&#xff0c;包括其他用户的进程• u&#xff1a;显示以用户为主的格式输出进程信息• x&#xff1a;显示当前用户再所有终端下的进程信息• -e&#xff1a;显示…

西门子S7-200SMART型PLC和MCGS7.7触摸屏控制台达伺服电机位置模式

西门子S7-200SMART型PLC和MCGS7.7触摸屏控制台达伺服电机位置模式,带接线说明参数说明和运行效果视频最近在项目中用到了西门子S7-200 SMART PLC搭配MCGS7.7触摸屏控制台达ASD-A2系列伺服电机&#xff0c;折腾两天终于跑通了位置模式控制。分享下具体实现过程&#xff0c;包含硬…

导师推荐10个AI论文平台,助你轻松搞定本科毕业论文!

导师推荐10个AI论文平台&#xff0c;助你轻松搞定本科毕业论文&#xff01; AI 工具助力论文写作&#xff0c;让学术之路更轻松 随着人工智能技术的不断发展&#xff0c;越来越多的本科生开始借助 AI 工具来提升自己的论文写作效率。尤其是在面对繁重的毕业论文任务时&#xff…

基于SpringBoot的防疫物资管理信息系统毕业设计

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在开发并实现一个基于SpringBoot框架的防疫物资管理信息系统&#xff0c;以应对当前及未来可能出现的公共卫生事件。具体研究目的如下&#xff1a;提高防…

SSAS - 错误之无效标记

问题描述 在SAAS中&#xff0c;添加计算成员&#xff0c;修改其语句后&#xff0c;部署报错。 计算成员 CREATE MEMBER CURRENTCUBE.[Measures].同期发货AS (ParallelPeriod([日期].[年-月-日].[年],1,[日期].[年-月-日].CurrentMember),[Measures].[发货金额]), VISIBLE 1 …

【模板】最小生成树(洛谷P3366)

题目描述如题&#xff0c;给出一个无向图&#xff0c;求出最小生成树&#xff0c;如果该图不连通&#xff0c;则输出 orz。输入格式第一行包含两个整数 N,M&#xff0c;表示该图共有 N 个结点和 M 条无向边。接下来 M 行每行包含三个整数 Xi​,Yi​,Zi​&#xff0c;表示有一条…