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

news/2024/7/8 1:34:31

最大公约数

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

什么是最大公约数

最大公约数(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://lihuaxi.xjx100.cn/news/1886156.html

相关文章

BigDecimald简单使用

为什么要用BigDecimal运算 在计算浮点型数据时,往往会存在数据计算失真问题 例1 2.0 - 1.9 应该等于0.1,用float类型赋值运算得出的结果为0.100000024,有问题 例2 1.8 - 1.9 应该等于 -0.1,用double类型赋值得出的结果为-0.09999999999999987,明显有问题 BigDecimal使用 BigDec…

Helm 包管理器

一、什么是 Helm&#xff1f; Kubernetes 包管理器 Helm 是查找、分享和使用软件构件 Kubernetes 的最优方式。Helm 管理名为 chart 的 Kubernetes 包的工具。Helm 可以做以下的事情&#xff1a; 从头开始创建新的 chart 将 chart 打包成归档(tgz)文件 与存储 chart 的仓库进行…

Next.js中的App Router与Page Router,各自的作用和使用方式,如何理解和配置使用?

App Router介绍 Next.js中的App Router是全局的路由器&#xff0c;它用于在应用程序的所有页面之间进行导航。它可以用于在页面之间传递状态和数据&#xff0c;类似于React中的Context。 App Router是通过_app.js文件中的getInitialProps方法来配置的。 在 Next.js 中&#xf…

SD-WAN架构:优化连接以提升性能

SD-WAN架构主要分为三种类型&#xff0c;分别为本地架构、支持云的架构、支持云的骨干架构。每一种架构都基于它们利用广域网&#xff08;WAN&#xff09;的方式而有其独特的优势。本文将对三种SD-WAN架构进行简要介绍。 SD-WAN本地架构 SD-WAN本地架构是在现场使用SD-WAN盒或…

mysql源码linux环境部署

文章目录 一、mysql下载地址二、安装步骤1.cd /usr/local/ #切换到此目录下2.上传mysql安装包到该目录下3.解压并且移动文件到 /usr/local/mysql目录下 三、创建用户组&#xff0c;分配权限四、修改文件总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参…

【教程】app备案流程简单三部曲即可完成

APP备案流程包括以下步骤&#xff1a; 1. 开发者实名认证&#xff1a;在提交备案申请之前&#xff0c;开发者需要通过移动应用开发平台进行实名认证。这个步骤需要提供身份证号码、姓名、联系方式等信息&#xff0c;并上传相关证件照片或扫描件。 2. 应用信息登记&#xff1a…

【开题报告】基于SpringBoot的小饭桌管理系统的设计与实现

1.选题背景 &#xff08;1&#xff09;技术需求&#xff1a;随着互联网和移动互联网的快速发展&#xff0c;餐饮行业也面临着数字化、信息化的挑战和机遇。许多餐厅或饭店管理仍然采用传统的方式&#xff0c;存在着排队等候时间长、座位安排不合理等问题。因此&#xff0c;设计…

HyperGCN代码复现

环境&#xff1a;python3.6.7&#xff0c;torch0.4&#xff0c;外加pyyaml。 问题1:TypeError: cant convert np.ndarray of type numpy.intc. The only supported types are: double, float, float16, int64, int32, and uint8. 解决办法&#xff1a; 复现结果&#xff1a; …