最大公约数gcd的通俗理解和Java代码的实现

最大公约数

    • 什么是最大公约数
    • 最大公约数的计算
    • 练习(找出数组的最大公约数)

什么是最大公约数

最大公约数(Greatest CommonDivisor,简称GCD)是指两个或多个整数共有的最大正因数,即能够同时整除这些数的最大的正整数。以两个整数为例,最大公约数表示这两个数最大的共有因数,也就是能够同时整除这两个数的最大整数。
例如,对于数字48和18,它们的最大公约数是6,因为6是48和18都能整除的最大整数。

最大公约数的计算

最大公约数(GCD)可以通过欧几里德算法(辗转相除法)来求解。算法的步骤如下:

  1. 用较大数除以较小数,得到商和余数。

    • 48除以18,商为2,余数为12。
  2. 将较小数替换为原来的较大数,将余数替换为原来的较小数。

    • 现在,将18替换为原来的12,将12替换为原来的18。
  3. 重复步骤1和2,直到余数为0。

    • 18除以12,商为1,余数为6。
    • 将12替换为6,将6替换为12。
    • 12除以6,商为2,余数为0。
    用数学理解以上描述
    48 % 18 =12
    18 % 12 = 6
    12 % 6 = 0
    6即为最大公约数
    

因此,通过欧几里德算法,我们可以求得48和18的最大公约数为6。

//代码表示最大公约数(GCD)求解
//48 % 18 =12
//18 % 12 = 6
//12 % 6 = 0
public static int gcd(int m, int n) {while (n != 0) { //出口int temp = m % n;m = n;n = temp;}return m; //这里之所以返回m是因为在最后一次计算中除数n的值被赋值给m了}

练习(找出数组的最大公约数)

练习找出数组的最大公约数

给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数

两个数的 最大公约数 是能够被两个数整除的最大正整数。

示例 1:

输入:nums = [2,5,6,9,10]
输出:2
解释:
nums 中最小的数是 2
nums 中最大的数是 10
2 和 10 的最大公约数是 2

示例 2:

输入:nums = [7,5,6,8,3]
输出:1
解释:
nums 中最小的数是 3
nums 中最大的数是 8
3 和 8 的最大公约数是 1

示例 3:

输入:nums = [3,3]
输出:3
解释:
nums 中最小的数是 3
nums 中最大的数是 3
3 和 3 的最大公约数是 3
class Solution {public int findGCD(int[] nums) {int min = nums[0];int max = nums[0];for(int i = 1;i < nums.length;i++){if(nums[i] < min) min = nums[i];if(nums[i] > max) max = nums[i];}return gcd(max,min);}public static int gcd(int m, int n) {while (n != 0) {int temp = m % n;m = n;n = temp;}return m;}
}

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

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

相关文章

总线一:I2C简介(介绍看这一篇就够啦)

本节主要介绍以下内容&#xff1a; I2C协议简介 STM32的I2C特性及架构 I2C初始化结构体详解 一、I2C协议简介 I2C 通讯协议(Inter&#xff0d;Integrated Circuit)是由Phiilps公司开发的&#xff0c;由于它引脚少&#xff0c;硬件实现简单&#xff0c;可扩展性强&#xff…

Java判断字符串是不是数字

描述&#xff1a;通过Java判断一个字符串&#xff0c;是不是数字。这里包括正数、负数、浮点数、科学计数法 代码&#xff1a; import java.util.regex.Pattern;public class Test {public static void main(String[] args) {System.out.println(isNumeric("12.23")…

数据结构二维数组计算题,以行为主?以列为主?

1.假设以行序为主序存储二维数组Aarray[1..100,1..100]&#xff0c;设每个数据元素占2个存储单元&#xff0c;基地址为10&#xff0c;则LOC[5,5]&#xff08; &#xff09;。 A&#xff0e;808 B&#xff0e;818 C&#xff0e;1010 D&…

【LeetCode-树】-- 109.有序链表转换二叉搜索树

109.有序链表转换二叉搜索树 方法&#xff1a;找到链表的中点&#xff0c;将其作为根节点 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNo…

线程的相关知识

线程的基本概念&#xff1a;1、线程实质上是轻量级的进程&#xff1b;2、引入线程后&#xff0c;线程替代进程&#xff0c;成为系统调度的基本单位&#xff1b;3、线程不会分配内存空间&#xff0c;一个进程中的多线程是共用进程的内存空间&#xff1b;4、多线程没有多进程安全…

使用Python 3.x 批量删除ArcGIS Server某一文件夹下的所有服务

以往对于Server的管理大部分是以前Python2.x的版本&#xff0c;但是现在考虑到使用Pro较多&#xff0c;为Python3.x的版本&#xff0c;有一些http连接包的连接代码有一定变化&#xff0c;所以这里对相关的方法进行了整理。 1. 连接server获取token 如果想批量删除服务&#x…

Mybatis之@Select注解

Mybatis之Select注解 Select注解基本用法 Select注解的目的是为了取代xml中的select标签&#xff0c;只作用于方法上面。 抛弃了传统的xml形式 例如&#xff08;简单的sql&#xff09; public interface UserMapper {Select("SELECT id, name, age FROM user WHERE id #…

python中import mysql.connector出错无模块,且是已经pip install mysql-connector情况下

已经安装了mysql-connector和mysql-connector-python&#xff0c;使用python连接数据库&#xff0c;导入import mysql.connector仍报错&#xff1a; import mysql.connector# Connect to server cnx mysql.connector.connect(host"127.0.0.1",port3306,user"a…

加班、效率和价值

效率不等于单位时间单位人干的活&#xff0c;而是等于单位时间单位人产出的价值&#xff0c;衡量工作量的难度很大&#xff0c;而如何选择工作重点&#xff0c;挖掘工作价值难度更大。 加班的不可持续在于两点&#xff0c;第一点是对身体和精神的损害&#xff0c;降低内在动力…

视频剪辑进阶指南:批量置入视频封面,增加视频吸引力

在视频剪辑的进阶阶段&#xff0c;除了掌握基本的剪辑技巧和特效处理&#xff0c;还要尝试一些创新的方法来增加视频的吸引力。批量置入视频封面就是一种有效的方式。通过置入吸引的封面&#xff0c;能吸引观众点击视频并提高观看量。下面详细介绍云炫AI智剪如何批量置入视频封…

pandas按行值筛选

之前都没有意识到这个问题&#xff0c;就是pandas取某一行的值的问题 测试代码如下 import pandas as pd import numpy as np df pd.DataFrame({A: foo bar foo bar foo bar foo foo.split(),B: one one two three two two one three.split(),C: np.arange(8), D: np.arange…

Go (一) 基础部分4 -- 文件处理

一、文件基本介绍 1.1、打开一个文件 基本介绍&#xff1a;打开一个文件用于读取&#xff0c;如果操作成功&#xff0c;返回的文件对象的方法可用于读取文件数据。如果出错&#xff0c;错误底层类型是"*.PathError" func Open(name string) (*File, error) name stri…

GO闭包实现原理(汇编级讲解)

go语言闭包实现原理(汇编层解析) 1.起因 今天开始学习go语言,在学到go闭包时候,原本以为go闭包的实现方式就是类似于如下cpp lambda value通过值传递,mutable修饰可以让value可以修改,但是地址不可能一样value通过引用传递,但是在其他地方调用时,这个value局部变量早就释放,…

Tessy — 嵌入式软件单元测试/ 集成测试工具学习

Tessy — 嵌入式软件单元测试/ 集成测试工具 本文章向大家介绍Tessy — 嵌入式软件单元测试/ 集成测试工具,主要包括Tessy — 嵌入式软件单元测试/ 集成测试工具使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。 Tessy 源自…

数据结构第六课 -----排序

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

【Canvas】记录一次从0到1绘制风场空间分布图的过程

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热衷分享有趣实用的文章&#xff0c;希望大家多多支持&#xff0c;一起进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 背景 前置知识 风场数据 绘制风场 准备工作 生成二维网格 获取…

【BI】FineBI功能学习路径-20231211

FineBI功能学习路径 https://help.fanruan.com/finebi/doc-view-1757.html 编辑数据概述 1.1 调整数据结构 1.2 简化数据 2.1上下合并 2.2其他表添加列 2.3左右合并 新增分析指标 函数参考 https://help.fanruan.com/finereport/doc-view-1897.html 数值函数 日期函数 文…

GeoTools学习笔记

Feature要素&#xff1a; 例子&#xff1a;Csv2Shape.java 创建要素&#xff0c;先创建FeatureType&#xff0c;再创建Feature 根据FeatureCollection&#xff0c;可以创建shapefile https://docs.geotools.org/latest/userguide/library/main/data.html API详解&#xff1a;…

MySql数据库全量备份脚本

#!/bin/bash# 设置数据库连接信息 DB_HOST"localhost" DB_USER"root" DB_PASS"密码" DB_NAMES("db1" "db2" "db3" "db4")# 设置备份目录 BACKUP_DIR"/home/mysql/mysql-back/everyday" # 每天…

【unity小技巧】FPS游戏后坐力制作思路

参考原视频链接 &#xff1a;https://www.bilibili.com/video/BV1j44y1S7fX/ 注意&#xff1a;本文为学习笔记记录&#xff0c;推荐支持原作者&#xff0c;去看原视频自己手敲代码理解更加深入 免责声明&#xff1a;向宇的博客免责声明 文章目录 前言不加后座力效果简单添加后座…