最小公倍和最大公约数的一般解决方案

简介: 最小公倍和最大公约数的一般解决方案

对于最大公约数和最小公倍数的解法,BigInteger API提供了一个一般性的解决方案,可以根据例子来理解使用:

示例:


给你一个整数数组 nums 和一个整数 k ,
请你统计并返回 nums 的 子数组 中满足 元素最小公倍数为 k 的子数组数目。
子数组 是数组中一个连续非空的元素序列。
数组的最小公倍数 是可被所有数组元素整除的最小正整数。
输入:nums = [3,6,2,7,1], k = 6
输出:4
解释:以 6 为最小公倍数的子数组是:
- [3,6,2,7,1]  (3,6)
- [3,6,2,7,1].  (3,6,2)
- [3,6,2,7,1].  (6)
- [3,6,2,7,1].  (6,2)

解法:


import java.math.BigInteger;
class Solution {
    public int subarrayLCM(int[] nums, int k) {
        int res = 0;
        for (int i = 0; i < nums.length; i++) {
            // 初始化为 1,任何数与 1 的 lcm 都是它本身
            BigInteger lcm = BigInteger.ONE;
            for (int j = i; j < nums.length; j++) {
                // lcm(a, b) = a * b / gcd(a, b)
                lcm = lcm.multiply(BigInteger.valueOf(nums[j])).divide(lcm.gcd(BigInteger.valueOf(nums[j])));
                // 担心溢出就用 lcm.doubleValue()
                if (lcm.intValue() == k) res++;
            }
        }
        return res;
    }
}

思路和主要方法:


最小公倍 = 两数相乘/最大公约
API方法:
  a. this.gcd(val):返回最大公约数 gcd(this,val)
  b. this.multiply(val): 返回两数乘积 this * val
  c. this.divide(val): 返回两数相除的结果 this / val
相关文章
|
存储 JSON Kubernetes
KubeConfig
KubeConfig 是一个用于存储和管理 Kubernetes 集群配置文件的 JSON 格式文件。它包含了集群的详细信息,如 API 服务器地址、认证信息、命名空间等。KubeConfig 文件的主要作用是让用户能够轻松地在不同的 Kuberne
514 1
|
2月前
|
人工智能 监控 数据可视化
什么是低代码开发平台?2025年最热门的10大低代码开发平台盘点!
低代码开发平台通过可视化拖拽、模型驱动等方式,大幅减少手工编码,提升应用开发效率。当下更是结合AI能力,自动生成应用,组件,图表,进一步加快应用软件的开发效率落地。
|
JavaScript 前端开发
JS之url进行编码和解码(三种方式)
JS之url进行编码和解码(三种方式)
19886 2
|
10月前
|
存储 算法 API
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
1518 82
|
6月前
|
人工智能 数据可视化 物联网
物流轨迹订阅查询API调用全流程
本文介绍了物流轨迹订阅查询 API 从传统物流到智慧物流的转型价值与应用。该接口支持主流快递公司,通过标准化数据格式返回物流状态与详细路径信息,助力物流可视化、智能调度和精准客服。核心功能包括基于快递单号查询物流状态与轨迹,提供如快递公司、运单号、签收状态等关键信息。同时,文章还提供了调用流程及 Python 示例代码,便于开发者集成使用。未来,随着 AI 和物联网技术的发展,物流轨迹查询将向智慧物流生态演进,进一步提升行业效率与用户体验。
954 0
|
11月前
|
人工智能 自然语言处理
使用企业微信或公众号自动回复图片消息
AppFlow支持企业微信和公众号接收图片消息,并提供两种回复方式。方式一:直接回复图片消息,用户发送图片后立即收到回复,但无法继续追问。方式二:先保存图片,待用户发送文字后再一并处理并回复。配置步骤包括选择模板、配置鉴权信息、设置执行动作参数及发布连接流。详细操作可参考相关文档。
1133 1
使用企业微信或公众号自动回复图片消息
|
XML Java Maven
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
这篇文章详细介绍了如何在Spring Boot项目中使用logback进行日志记录,包括Maven依赖配置、logback配置文件的编写,以及实现的日志持久化和控制台输出效果。
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
|
数据采集 资源调度 JavaScript
Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
【8月更文挑战第4天】Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
285 5
|
定位技术 数据中心
TikTok运营:IPXProxy代理IP的重要性及其应用
​在全球范围内,TikTok已经成为一个不可忽视的社交媒体平台,为个人用户和企业提供了展示自我和推广产品的机会。然而,随着TikTok运营的复杂性增加,代理IP的重要性也逐渐显现。
349 2
|
SQL 监控 关系型数据库
mysql统计数据库大小
通过这些方法,数据库管理员可以有效地监控和规划MySQL数据库的存储需求,确保数据库的稳定运行。
363 0