求多个数的最大公约数及比例化简

目录

    • 求多个数的最大公约数及比例化简
      • 代码功能概述
      • 主要步骤
      • 代码详解
        • 1. 求两个数的最大公约数
        • 2. 求多个数的最大公约数
        • 3. 应用示例
      • 示例与应用
      • 博客总结

求多个数的最大公约数及比例化简

代码功能概述

这段代码的目的是求多个数的最大公约数(GCD),然后利用这个最大公约数来简化这些数的比例。具体示例是将 4:2:2 简化为 2:1:1

主要步骤

  1. 求多个数的最大公约数:使用递归方法逐步计算数组中多个数的最大公约数。
  2. 比例简化:通过将每个数除以最大公约数来简化比例。

代码详解

1. 求两个数的最大公约数
// 求两个数的最大公约数
public static int getBigDiv(int a, int b) {if (b == 0)return a;return getBigDiv(b, a % b);
}

这段代码使用欧几里得算法(Euclidean Algorithm)来求两个数的最大公约数。其核心思想是利用递归,将问题逐步简化:

  • 如果 b 为 0,则 a 即为最大公约数。
  • 否则,递归调用 getBigDiv(b, a % b),将较大数 a 和较小数 b 的求余结果作为新的参数继续计算。
2. 求多个数的最大公约数
// 求多个数的最大公约数
public static int getMoreBigDiv(Integer num[], Integer n) {if (n == 1)return num[n - 1];return getBigDiv(num[n - 1], getMoreBigDiv(num, n - 1));
}

这段代码使用递归的方法,逐步计算数组中多个数的最大公约数:

  • 如果数组中只有一个数(n == 1),那么这个数即为最大公约数。
  • 否则,递归调用 getMoreBigDiv,将数组的最后一个数与剩余部分的最大公约数进行计算,直到处理完所有数。
3. 应用示例

假设我们有一个数组 divisorArray,包含多个数需要简化其比例:

Integer divisor = DivisorMultipleUtils.getMoreBigDiv(divisorArray, adPercents.size()); // 最大公约数

这里调用 getMoreBigDiv 方法,计算数组 divisorArray 中所有数的最大公约数。

示例与应用

以下是一个完整的示例,展示如何将比例 4:2:2 简化为 2:1:1

import java.util.Arrays;public class DivisorMultipleUtils {public static void main(String[] args) {Integer[] adPercents = {4, 2, 2};Integer divisor = getMoreBigDiv(adPercents, adPercents.length); // 最大公约数System.out.println("最大公约数: " + divisor);// 将比例简化Integer[] simplifiedPercents = Arrays.stream(adPercents).map(p -> p / divisor).toArray(Integer[]::new);System.out.println("简化后的比例: " + Arrays.toString(simplifiedPercents));}// 求两个数的最大公约数public static int getBigDiv(int a, int b) {if (b == 0)return a;return getBigDiv(b, a % b);}// 求多个数的最大公约数public static int getMoreBigDiv(Integer num[], Integer n) {if (n == 1)return num[n - 1];return getBigDiv(num[n - 1], getMoreBigDiv(num, n - 1));}
}

博客总结

在这篇博客中,我们介绍了如何使用 Java 求多个数的最大公约数,并利用最大公约数来简化数的比例。通过递归方法,我们能够高效地处理任意数量的数,应用于各种需要比例简化的场景。

这段代码展示了基础的数学算法在实际编程中的应用,非常适合处理如广告分配比例、资源分配比例等场景。

希望通过这篇博客,读者能够理解最大公约数的计算方法,并能够在实际项目中应用这些算法来简化和优化工作。


这样一篇博客不仅解释了代码,还提供了实际应用示例,能够帮助你更好地理解和应用最大公约数算法。

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

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

相关文章

【el-table 实现自定义单选】

el-table 实现自定义单选 示例图片代码 示例图片 代码 row-click"singleElection"<el-table-columnalign"center"label"选择"><template slot-scope"scope"><el-radio:key"scope.row.id"v-model"templa…

ChannelHandlerContext——ChannelHandler和ChannelPipeline之二

目录 ChannelHandlerContext接口 使用ChannelHandlerContext ChannelHandler和ChannelHandlerContext的高级用法 异常处理 处理入站异常 处理出站异常 本文继上文《ChannelHandler和ChannelPipeline之一》&#xff0c;接着讲ChannelHandlerContext接口。 ChannelHandlerC…

LeetCode hot100-51-G

200. 岛屿数量 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外&#xff0c;你可以假设该网…

Python 全栈体系【四阶】(五十)

第五章 深度学习 十一、扩散模型 4. 附录&#xff1a;Diffusion的数学推导过程 4.2 Diffusion正向扩散过程推导 设初始数据 x 0 x_0 x0​符合分布 q ( x 0 ) q(x_0) q(x0​)&#xff0c;即训练集分布&#xff0c;然后不断向其中添加高斯噪声&#xff0c;高斯噪声本身是不可…

需求响应+配网重构!含高比例新能源和用户需求响应的配电网重构程序代码!

前言 配电网重构作为配电网优化运行的手段之一&#xff0c;通过改变配电网的拓扑结构&#xff0c;以达到降低网损、改善电压分布、提升系统的可靠性与经济性等目的。近年来&#xff0c;随着全球能源消耗快速增长以及环境的日趋恶化&#xff0c;清洁能源飞速发展&#xff0c;分…

超简单白话文机器学习 - 逐步回归Lasso,Ridge正则化(含算法讲解,公式全解,手写代码实现,调包实现)

1. 提高泛化能力 1.1 概念 正则化是一种在机器学习和统计建模中用于防止过拟合的技术。过拟合是指模型在训练数据上表现很好&#xff0c;但在未见过的测试数据或新数据上表现不佳。正则化通过在损失函数&#xff08;如最小二乘误差&#xff09;中添加一个惩罚项&#xff0c;限…

【Spring】Spring事务管理

1. 事务的基本概念 1.1简介 数据库事务是指作为单个逻辑工作单元执行的一系列操作&#xff0c;要么完全地执行&#xff0c;要么完全地不执行。Spring的事务管理主要基于AOP&#xff08;面向切面编程&#xff09;技术&#xff0c;通过声明式或编程式的方式来实现。Spring框架内…

仓库管理WMS软件(Warehouse Management Software)百科解析

一、什么是仓库管理软件&#xff08;WMS&#xff09;&#xff1f; 仓库管理软件&#xff08;WMS&#xff09;全称Warehouse Management System&#xff0c;是一种专门用于仓库作业流程优化和库存控制的软件系统。它通过先进的自动识别与数据采集技术&#xff0c;实现对仓库货物…

Leecode热题100---114:二叉树展开为链表

题目&#xff1a; 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同…

SCSS基本使用

SCSS&#xff08;Sassy CSS&#xff09;是一种 CSS 预处理器&#xff0c;它是 CSS 语言的一个扩展&#xff0c;增加了变量、嵌套规则、混合&#xff08;mixins&#xff09;、函数等功能&#xff0c;使得编写 CSS 更加高效和易于维护。SCSS 代码最终会被编译成标准的 CSS 代码。…

Lambda表达式使用及详解

Java 8引入的Lambda表达式是一种重要的功能&#xff0c;它允许你以更简洁、更直接的方式传递方法。Lambda可以被用来代替只有单个抽象方法的接口的匿名实现类。这里有一些Lambda表达式的实际应用场景及其示例&#xff1a; 1. 集合操作 在处理集合时&#xff0c;如List或Set&a…

Oracle数据库中的PCTFREE解析

PCTFREE是Oracle数据库中用于表或索引段空间管理的一个重要存储参数。这个参数定义了一个数据块中保留的最小空闲空间百分比&#xff0c;旨在为现有行的未来更新预留空间。具体来说&#xff1a; 当设置一个数据块的PCTFREE值时&#xff0c;你实际上是告诉Oracle在这个数据块填满…

Spring Boot | Spring Boot 实现 “记住我“ 功能

目录: 一、SpringBoot 中 自定义 "用户授权管理" ( 总体内容介绍 )二、实现 "记住我" 功能 ( 通过 "HttpSecurity类" 的 rememberMe( )方法来实现 "记住我" 功能 ) :2.1 基于 "简单加密 Token" 的方式 ( 实现 "记住我&…

av_dump_format经验分析,FFmpeg获取媒体文件总时长(FLV获取总时长的误区)

播放器有个功能&#xff0c;当用户打开视频时&#xff0c;需要读取媒体文件的总时长等信息&#xff0c;不巧的时&#xff0c;获取FLV时总失败&#xff0c;下面来具体分析下FLV和MP4获取总时长的原因和区别&#xff1a; 播放器有个获取MediaInfo的接口&#xff0c;功能如下&am…

python web自动化(关键字驱动与POM)

1.关键字驱动解析 所谓的关键字驱动&#xff0c;本质就是函数封装的过程。 ⾃动化当中的封装⽬的是&#xff1a;拆分重复的⾏为代码和测试数据&#xff0c;增加可维护性和复⽤性 我们想要定义一个工具类 # 定义工具类&#xff08;基于基础的方法&#xff0c;进行的关键…

echarts全局设置饼图的颜色

&#x1f337;第一步 在js文件中写入你需要的颜色 这里的颜色也可以写渐变的 &#x1f337;下一步 在main.is中引用全局挂载 &#x1f337;最后一步 在初始化的时候加一个macarons即可 &#x1f337;第一步 在js文件中写入你需要的颜色 这里的颜色也可以写渐变的 (functi…

探索k8s集群中kubectl的陈述式资源管理

一、k8s集群资源管理方式分类 1.1陈述式资源管理方式&#xff1a;增删查比较方便&#xff0c;但是改非常不方便 使用一条kubectl命令和参数选项来实现资源对象管理操作 即通过命令的方式来实 1.2声明式资源管理方式&#xff1a;yaml文件管理 使用yaml配置文件或者json配置文…

【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法

文章目录 前言 Timer中断调度 Event中断调度 StateFlow调度 分析和应用 总结 参考资料 前言 近期在一些嵌入式系统开发项目中&#xff0c;在使用嵌入式处理器时&#xff0c;遇到了挺多费时费力的事情。所以利用晚上和周末时间&#xff0c;在这些方面深入研究了一下&…

全文索引-FullText

一、数据结构 倒排索引&#xff1a;存储单词与文档的映射 1、正向索引 正向索引结构如下: 文档1的ID→单词1的信息&#xff1b;单词2的信息&#xff1b;单词3的信息… 文档2的ID→单词3的信息&#xff1b;单词2的信息&#xff1b;单词4的信息… 2、反向索引 反向索引结构如…

AWS安全性身份和合规性之Inspector

Amazon Inspector 是一项漏洞管理服务&#xff0c;可持续扫描您的 AWS 工作负载&#xff0c;以查找软件漏洞和意外网络泄露。Amazon Inspector 会自动发现和扫描正在运行的亚马逊 EC2 实例、亚马逊弹性容器注册表 (Amazon ECR) Container Registry 中的容器映像&#xff0c;以及…