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

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

对于最大公约数和最小公倍数的解法,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
相关文章
|
JavaScript 前端开发 Serverless
Vue.js的介绍、原理、用法、经典案例代码以及注意事项
Vue.js的介绍、原理、用法、经典案例代码以及注意事项
|
2月前
|
JSON Go PHP
告别阻塞!用 PHP TrueAsync 实现 PHP 脚本提速 10 倍
本文介绍如何用 PHP TrueAsync 构建高性能进程池:基于 `proc_open` 与 NDJSON 协议实现非阻塞进程通信,结合 Channel 任务分发、TaskGroup 协程管理及 Supervisor 自愈机制,让同步 PHP 函数在协程中高效并行,轻松提速 10 倍。
190 19
|
9月前
|
人工智能 文字识别 监控
抖音一键跳转微信加好友如何实现?
在2025年的移动互联网生态中,抖音日活用户已突破8亿,微信月活达13亿,两大平台间的用户导流
|
8月前
|
自然语言处理 IDE 开发工具
Xcode 26.0.1 (17A400) 发布 - Apple 平台 IDE
Xcode 26.0.1 (17A400) 发布 - Apple 平台 IDE
718 1
|
11月前
|
文字识别 监控 Python
顺丰骑士抢单辅助免封号,抢单加速器永久免费版,美团饿了么蜂鸟货拉拉
这是一款基于Python的订单自动检测与抢单工具,集成图像预处理、OCR文字识别、订单解析及条件判断功能。程序通过Tesseract OCR引擎提取指定屏幕区域(如订单列表)
|
11月前
|
人工智能 数据可视化 物联网
物流轨迹订阅查询API调用全流程
本文介绍了物流轨迹订阅查询 API 从传统物流到智慧物流的转型价值与应用。该接口支持主流快递公司,通过标准化数据格式返回物流状态与详细路径信息,助力物流可视化、智能调度和精准客服。核心功能包括基于快递单号查询物流状态与轨迹,提供如快递公司、运单号、签收状态等关键信息。同时,文章还提供了调用流程及 Python 示例代码,便于开发者集成使用。未来,随着 AI 和物联网技术的发展,物流轨迹查询将向智慧物流生态演进,进一步提升行业效率与用户体验。
1165 0
|
人工智能 自然语言处理
使用企业微信或公众号自动回复图片消息
AppFlow支持企业微信和公众号接收图片消息,并提供两种回复方式。方式一:直接回复图片消息,用户发送图片后立即收到回复,但无法继续追问。方式二:先保存图片,待用户发送文字后再一并处理并回复。配置步骤包括选择模板、配置鉴权信息、设置执行动作参数及发布连接流。详细操作可参考相关文档。
1635 1
使用企业微信或公众号自动回复图片消息
|
网络协议 Java
JAVA实现心跳检测【长连接】
这篇文章介绍了Java中实现心跳检测机制的方法,包括心跳机制的简介、实现方式、客户端和服务端的代码实现,以及具体的测试结果。文中详细阐述了如何通过自定义心跳包和超时检测来维持长连接,并提供了完整的客户端和服务端示例代码。
JAVA实现心跳检测【长连接】
|
安全 Go 开发者
poi在指定位置插入图片并浮动
在使用poi操作docx模板文件时,poi直接插入图片是插入内嵌图片 这个图片是占位置的。
1328 0

热门文章

最新文章