用递归法求两个数的最大公约数

2023-11-19

用递归法求两个数的最大公约数

求两个数的最大公约数的思路是,用辗转现除法

辗转相除法求两个数的最大公约数的步骤如下:
先用小的一个数除大的一个数,得第一个余数;
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;

这样逐次用后一个数去除前一个余数,直到余数是0为止.那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。

例如:求1515和600的最大公约数,
第一次:用600除1515,商2余315;
第二次:用315除600,商1余285;
第三次:用285除315,商1余30;
第四次:用30除285,商9余15;
第五次:用15除30,商2余0.
1515和600的最大公约数是15.

就相当于用先用m除以n,然后下一次用n替换m,m%n替换n,变成n除以m%n,也就是m–>n,n–>m%n,这样就可以构成递归的关系,用(n,m%n)替换(m,n)。递归的出口就是当余数(上一次的m%n)n为0的时候,最大公约数就是m(上一次的n)。

代码实现如下:

import java.util.Scanner;
public class GCD {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("请输入两个数:");
		Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        System.out.print("这两个数的最大公约数为:"+gcd(m,n));
	}
	static int gcd(int m,int n)
	{
		if(n==0)return m;
		return gcd(n,m%n);
	}
}

代码结果如下:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用递归法求两个数的最大公约数 的相关文章

随机推荐

  • SpringBoot整合Druid-Mybatis&SpringSecurity使用

    SpringBoot整合JDBC 创建springBoot项目时首先需要导入JDBC的支持 以及MySQL驱动
  • Vim编辑器常用命令

    Vim编辑器常用命令 Vim三种工作模式 命令模式 输入模式和编辑模式 Vim打开文件 Vim快捷方向键和以单词为单位移动 Vim插入文本 Vim查找文本 Vim替换文本 Vim删除文本 vim复制和粘贴文本 Vim保存退出文本 Vim光标
  • timestamp相减的函数 java_DB2中TIMESTAMP字段的计算

    以下内容是对 DB2 基础 日期和时间的使用 的内容进行的摘要与精练 遗憾的是 本文参考的原文已经被IBM DeveloperWorks删掉了 暂时还没找到 1 在SQL中使用DB2中的寄存器获取数据库服务器当前时间戳SELECT curr
  • 如何用ps把蓝底照片换成白色的

    用ps把蓝底照片换成白色的的具体步骤为 1 打开换白底的照片 菜单栏 调整 替换颜色 打开这个工具 2 认真看下图的圆圈所指的地方 点一下这个结果色块 我们选择一个白色色彩 3 有一个关键的一个点 就是一定要保证明度是100的 这样才会出现
  • 学习笔记-Spark环境搭建与使用

    一 20 04 Ubuntu安装 清华源ISO源 https mirrors tuna tsinghua edu cn ubuntu releases 20 04 下载链接 https mirrors tuna tsinghua edu c
  • 【整理八】

    1 说说你对Event Loop的理解 Eventloop 是一种在编程语言中常用的编程模型 用于处理任务队列中的事件 它可以被用来处理各种任务 包括网络事件 文件读写 定时器 用户界面事件等Eventloop 的工作原理是 它会按顺序处理
  • 通过进入单用户模式解决linux中的rc.local修改后无法启动的问题

    问题 本想将teamviewer这个软件随linux自启动 所以将其启动命令放在rc local中 但是重启后发现linux启动不起来了 系统前面都是正常启动的 就是无法进入帐户登陆界面 无法输入root帐号密码 不能登陆到系统 按了ctr
  • ROS系列报错与解决方法

    6 28 一 问题描述 ROS运行roscore命令后发现提示log文件 日志文件 大小超过1G 需要清理 Checking log directory for disk usage This may take awhile Press C
  • MYSQL 查看最大连接数和修改最大连接数

    MySQL查看最大连接数和修改最大连接数 1 查看最大连接数 show variables like max connections 2 修改最大连接数 set GLOBAL max connections 200 以下的文章主要是向大家介
  • 2021年 centos7.2 openssl3安装全过程

    安装关联软件包和编译工具包 yum install perl ExtUtils CBuilder perl ExtUtils MakeMaker 官网下载 https www openssl org source wget https ww
  • C++里有哪几种数据类型

    C 里有哪几种数据类型 1 基本类型 布尔型 布尔型 即bool 它的取值只能是true 真 或者false 假 分别代表非零与零 对布尔型的赋值可以直接用true或者false进行赋值 也可以用整型常量对其进行赋值 只不过整型常量赋值给布
  • vue加载ElementUI的el-image图片时不能使用相对路径问题

    Vue官方提供的图片控件el image 在加载相对路径时会出现加载失败现象
  • boost中boost::uint32_t和一般的uint32_t的区别

    using boost int8 t using boost uint8 t using boost int16 t using boost uint16 t using boost int32 t using boost uint32 t
  • word格式问题——英文单词间距太大、文本中嵌入公式导致行距太大、单双栏排版

    1 英文单词直接间距太大 1 全选 右击鼠标 选 段落 中文版式 勾选 允许西文在单词中间换行 如果不勾选此项 可目测换行位置 按住Shift打回车 手动换行 2 选择左对齐 然后用 连接被分割的单词 2 文本中嵌入公式导致行距太大 在段落
  • php的$_SERVER['HOSTNAME']

    一 前言 在最新一次更新代码后 发现代码中出现了 SERVER HOSTNAME 这个东西 关键是 SERVER HTTP HOST 和 SERVER SERVER NAME 我们经常用到 一般是用来获取服务器上的相关参数 唯独这个HOST
  • 写需求分析必须牢记的5大要点

    需求验证的5大要点 要做好需求验证 必须在思想 方法 语言 人员 内容5个要点上做好相应的工作 否则就会产生很多负面的影响 1 思想 前面已经说过 由于Review被翻译成 评审 导致很多人将其与中国人常说的评审相混淆 其实它们之间是有区别
  • CSDN博文显示图片的方法

    感觉官方应该出一个教程的 不然新手第一次发博文十有八九会发现自己的博文发表之后没有图片 既然官方不给 那么自己摸索咯 参考 http blog csdn net cherish cx article details 52782644 1 编
  • 利用Mybatis拦截器对数据库水平分表

    首先你要知道在哪些sql上面要处理分表 你可能需要一个注解 java view plain copy package com dusk domyself stock common split import java lang annotat
  • 数据挖掘知识点总结

    1 数据挖掘产生的背景 驱动力是什么 四种主要技术激发了人们对数据挖掘技术的开发 应用和研究的兴趣 超大规模数据库的出现 如商业数据仓库和计算机自动收集数据记录手段的普及 先进的计算机技术 如更快和更大的计算能力和并行体系结构 对海量数据的
  • 用递归法求两个数的最大公约数

    用递归法求两个数的最大公约数 求两个数的最大公约数的思路是 用辗转现除法 辗转相除法求两个数的最大公约数的步骤如下 先用小的一个数除大的一个数 得第一个余数 再用第一个余数除小的一个数 得第二个余数 又用第二个余数除第一个余数 得第三个余数