算法——数论——GCD和LCM

目录

GCD(最大公约数)

 1、欧几里得算法

LCM(最小公倍数)

一、试题 算法训练 抗击虫群


GCD(最大公约数)

  • 整数 a 和 b 的最大公约数是指能同时整除 a 和 b 的最大整数,记为 gcd(a,b)
  • -a的因子和a的因子相同,例如gcd(15,18) = gcd(-15,-18) = 3
  • 性质:
  • 裴蜀定理:

 1、欧几里得算法

  • 用辗转相除法求GCD,即 gcd(a,b)=gcd(b,a mod b)
  • 代码逻辑:
    • 如果 a 能够整除 b,那么 b 就是 a 和 b 的最大公约数;
    • 否则,最大公约数即为 b 和 a 除以 b 的余数的最大公约数。
    • 我们重复使用这个逻辑,将原先的 b 替换为余数,并将原先的余数替换为新的 b,直到余数变为 0。此时,b 就是最大公约数。

  • 另外还有两种算法:更相减损术和Stein算法,用得较少
public static int gcd(int a,int b){return b!=0 ? gcd(b , a % b) : a;
}

LCM(最小公倍数)

  •  a 和 b 的最小公倍数表示为 lcm(a,b)
  • 推论:gcd(a,b) * lcm(a,b) = ab(具体过程略,该公式为结论,说明了LCM和GCD之间的关系)
public static int lcm(int a,int b){return a / gcd(a , b) * b;//如果先作乘法可能会溢出
}

一、试题 算法训练 抗击虫群

 分析:

  • 每次都是加 p 的药物量,不能多不能少,(n+m)% p == 0,而且刚好加满两个容器
  • 要快,即是 p 的数值要尽可能大,但最后一勺 p 不能超出容器
  • 综上,求 n 和 m 的最大公约数,使用欧几里得算法
  • 建议先去系统、完整地学习一下这个知识点,再回来处理题目
package no1_1;
import java.util.*;class Main {public static void main(String[] args){Scanner sc=new Scanner(System.in);while(sc.hasNextLine()) {int n = sc.nextInt();int m = sc.nextInt();sc.nextLine();//换行int p=gcd(n,m);System.out.println(p);}}public static int gcd(int a,int b) {//欧几里得算法计算最大公约数return b!=0?gcd(b,a%b):a;}
}

 

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

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

相关文章

为什么在产品设计和制造过程中要采用FMEA——SunFMEA软件

在产品设计和制造过程中,FMEA是一种非常重要的工具,用于评估潜在的故障模式及其对产品性能的影响。通过分析产品设计或流程中可能出现的故障模式,并评估其对产品性能和客户满意度的潜在影响,来预测和防止产品在生产和运行过程中出…

火星符号运算 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 已知火星人使用的运算符号为 #和$ 其与地球人的等价公式如下 x#y2*x3*y4 x$y3*xy2x y是无符号整数。地球人公式按照c语言规则进行计算。火星人公式中&#xff0…

心情切换器(仅供娱乐)

本次分享主要内容较为新奇&#xff0c;作用程度可以说没用&#xff0c;仅供娱乐(注&#xff1a;本次成果使用的为vue框架实现) 一、静态及呈现图 <div class"switchMood"><h2>心情转换器</h2><!--输入当前心情表单--><div class"fr…

LM403-Pro-Kit数据手册

如上图所示&#xff0c;LM403-Pro-Kit评估板由ST-LINK、跳线、LM403模组、按键、LED以及天线接口等组成。 USB连接PC即可以在线仿真、下载和串口打印调试输出、输入操作。 电源开关 控制LM403模组的电源与LDO的3.3V的通断。 MicroUSB 板子供电及ST-LINK与PC机连接的接口。 S…

代码随想录算法——数组

目录 1、二分查找法 2、移除元素 3、有序数组的平方 4、长度最小的子数组 5、螺旋矩阵II 1、二分查找法 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在…

Java多线程:线程安全

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、线程状态1、New&#xff08;初始状态&#xff09;2、Terminated&#xff08;终止状态&#xff09;3、Runnable&#xff08;…

以管理员权限删除某文件夹

到开始菜单中找到—命令提示符—右击以管理员运行 使用&#xff1a;del /f /s /q “文件夹位置” 例&#xff1a;del /f /s /q "C:\Program Files (x86)\my_code\.git"

Acwing154滑动窗口

theme: channing-cyan 题目 给定一个大小为 n≤10^6 的数组。 有一个大小为 k 的滑动窗口&#xff0c;它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子&#xff1a; 该数组为 [1 3 -1 -3 5 3 6 7]&#x…

【回溯算法】LCR 079. 子集

LCR 079. 子集 解题思路 初始化一个空的列表 res 来存储所有子集&#xff0c;并初始化一个空的列表 track 来跟踪当前正在构建的子集。 定义一个名为 subsets 的方法&#xff0c;该方法接受一个整数数组 nums 作为输入。此方法作为生成子集的入口点。 在 subsets 方法内部&a…

Flink从入门到实践(二):Flink DataStream API

文章目录 系列文章索引三、DataStream API1、官网2、获取执行环境&#xff08;Environment&#xff09;3、数据接入&#xff08;Source&#xff09;&#xff08;1&#xff09;总览&#xff08;2&#xff09;代码实例&#xff08;1.18版本已过时的&#xff09;&#xff08;3&…

《MySQL 简易速速上手小册》第9章:高级 MySQL 特性和技巧(2024 最新版)

文章目录 9.1 使用存储过程和触发器9.1.1 基础知识9.1.2 重点案例&#xff1a;使用 Python 调用存储过程实现用户注册9.1.3 拓展案例 1&#xff1a;利用触发器自动记录数据更改历史9.1.4 拓展案例 2&#xff1a;使用 Python 和触发器实现数据完整性检查 9.2 管理和查询 JSON 数…

VBA技术资料MF117:测试显示器大小

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

图论与图数据应用综述:从基础概念到知识图谱与图智能

目录 前言1 图论基础概念1.1 节点度1.2 度分布1.3 邻接矩阵 2 探索图的高级概念2.1 最短路径的关键性2.2 图的直径与平均路径的意义2.3 循环与路径类型的多样性 3 深入探讨图的广泛应用领域3.1 知识图谱的知识管理3.2 图智能在复杂决策中的应用3.3 图数据挖掘与分析的多领域应用…

Vue3富文本组件UEditor ,vue-ueditor-wrap@3.x

一、Vue 中UEditor 2.0版本跟3.0版本不兼容 重点安装版本不同 使用详细介绍&#xff1a; vue-ueditor-wrap - Vue UEditor v-model双向绑定 二、安装流程 1.安装 # vue-ueditor-wrap v3 仅支持 Vue 3 npm i vue-ueditor-wrap3.x -S # or yarn add vue-ueditor-wrap3.x …

[C#]winform制作仪表盘好用的表盘控件和使用方法

【仪表盘一般创建流程】 在C#中制作仪表盘文案&#xff08;通常指仪表盘上的文本、数字或指标显示&#xff09;涉及到使用图形用户界面&#xff08;GUI&#xff09;组件&#xff0c;比如Windows Forms、WPF (Windows Presentation Foundation) 或 ASP.NET 等。以下是一个使用W…

测试:JMeter如何获取非json格式的响应参数

JMeter如何获取非json格式的响应参数 在 JMeter 中获取非 JSON 格式的响应参数通常涉及使用后置处理器来提取这些参数。以下是一些常见的方法来获取不同类型的响应数据&#xff1a; 正则表达式提取器&#xff1a; 适用于提取文本、HTML、XML 等格式中的特定文本。使用正则表达…

docker compose部署mall

安装环境软件 1.拉取镜像 docker pull mysql:5.7 docker pull redis:7 docker pull nginx:1.22 docker pull rabbitmq:3.9-management docker pull elasticsearch:7.17.3 docker pull kibana:7.17.3 docker pull logstash:7.17.3 docker pull mongo:4 docker pull minio/mini…

Linux开发:PAM2 配置文件

PAM配置文件是用于粘合应用程序和PAM服务模块,通过其中的配置,可以动态的选择PAM服务模块,从而增加认证的可配置性和灵活性。 PAM配置文件通常保存在/etc/pam.d/目录下,当应用程序进行认证时,会选择对应的PAM配置文件,而PAM配置文件又对PAM服务具体使用哪些模块(动态链…

APEX开发过程中需要注意的小细节2

开发时遇到首次获取租户号失败的问题 以为是触发顺序问题&#xff0c;所以设置两个动态操作&#xff0c;一个事件是“更改”&#xff0c;另一个是“单击”&#xff0c; 但还是没有解决&#xff0c; 后来终于找到解决方法:在校验前执行取值 果然成功执行&#xff01; 动态查询年…

【推荐算法】userid是否需要建模

看到一个din的源码&#xff0c;将userid也构建了emb table。 于是调研了一下。即推荐算法需要建模userid吗&#xff1f; 深度学习推荐算法中user-id和item-id是否需要放入模型中作为特征进行训练呢&#xff1f; 深度学习推荐算法中user-id和item-id是否需要放入模型中作为特…