你会求《数字范围内的最小公倍数》吗?

简介: 你会求《数字范围内的最小公倍数》吗?

这是我参与更文挑战的第21天,活动详情查看:更文挑战

今天我在练习FreeCodeCamp的时候,发现一道很有意思的初级算法题目,特地和大家分享一下。

题目描述

找到可以被两者以及这些参数之间范围内的所有序列号均分的所提供参数的最小公倍数。

该范围将是一个由两个数字组成的数组,不一定按数字顺序排列。

例如,如果给定 1 和 3,请找出 1 和 3 的最小公倍数,该倍数也可以被1 和 3之间的所有数字整除。 这里的答案是 6。

测试实例

image.png

解题思路

当我刚刚看到这道题目的时候,我在想求最小公倍数这还不简单?但是事情仿佛没那么容易,原因在于题目中让我们求的不是两个数字的最小公倍数,而是这个区间范围内的最小公倍数,所以看懂题目很关键。

难点:如何求两个数的最小公倍数

思路

  1. 首先默认两个数字中较大的那个为最小公倍数。
  2. 通过while循环,只要默认的最小公倍数小于等于两数的乘积便进入循环,如果这个默认的最小公倍数对左边的数趋于为零,说明这个是最小公倍数直接返回即可,反之,让这个默认的最小公倍数加上右边的值继续循环。

代码

// 获取最小公倍数的函数
    function getSCM(left, right) {
        // 首先默认最小公倍数为right
        let SCM = right;
        while (SCM <= right * left) {
            if (SCM % left === 0) {
                return SCM
            } else {
                SCM = SCM + right;
            }
        }
    }
复制代码

解题代码

function smallestCommons(arr) {
    arr.sort((next, pre) => next - pre);
    // 获取最小公倍数的函数
    function getSCM(left, right) {
        // 首先默认最小公倍数为right
        let SCM = right;
        while (SCM <= right * left) {
            if (SCM % left === 0) {
                return SCM
            } else {
                SCM = SCM + right;
            }
        }
    }
    // 生成数组
    const newArr = [];
    for (let i = arr[0]; i <= arr[1]; i++) {
        newArr.push(i);
    }
    let result = arr[0] * (arr[0] + 1);
    // 通过循环不断更新最小公倍数
    for (let i = 2; i < newArr.length; i++) {
        result = getSCM(newArr[i], result);
    }
    return result;
}
smallestCommons([1, 5]);
复制代码

本题给我们的启示

  1. 学会通过循环的方式来求两个数字的最小公倍数。
  2. 学会通过更新的方式来获取,范围内的最小公倍数。

参考链接


相关文章
|
11月前
|
监控 安全 调度
任务调度企业级场景下的新选择,兼容 XXL-JOB 通信协议
XXL-JOB 是一个开源的分布式任务调度平台,开箱即用、简单易上手,得到了很多开发者的喜爱。和其他中间件开源项目一样,当开发者把开源项目部署到公共云,应用到企业级场景中时,就会在稳定性、性能、安全、其他云产品间集成体验上提出更高的要求。基于此背景,阿里云微服务引擎 MSE 基于自研的分布式任务调度平台 SchedulerX,通过兼容 XXL-JOB 客户端的通信协议,在开源 XXL-JOB 版本的基础上,提升了稳定性、安全、性能、可观测等能力,满足企业客户的需求。此外,为方便测试,提供了一个月 400 元额度的免费试用和预付费首购 5 折、续费 6.5 折起的优惠。
509 174
|
人工智能 物联网 文件存储
基于EasyAnimate模型的视频生成最佳实践
EasyAnimate是阿里云PAI平台自主研发的DiT的视频生成框架,它提供了完整的高清长视频生成解决方案,包括视频数据预处理、VAE训练、DiT训练、模型推理和模型评测等。本文为您介绍如何在PAI平台集成EasyAnimate并一键完成模型推理、微调及部署的实践流程。
|
10月前
|
SQL 弹性计算 安全
【上云基础系列04】基于标准架构的数据库升级
本文回顾了业务上云从基础到进阶的理念,涵盖基础版和全栈版架构。在“入门级:上云标准弹性架构基础版”的基础上,本文针对数据库升级,重点介绍了高可用数据库架构的升级方案,确保数据安全和业务连续性。最后,附有详细的“上云标准弹性架构”演进说明,帮助用户选择合适的架构方案。
|
Prometheus 监控 Kubernetes
青团社:亿级灵活用工平台的云原生架构实践
青团社是国内领先的一站式灵活用工招聘服务企业,灵活用工行业的 Top1。青团社于 2013 年在杭州成立,业务已经覆盖全国,在行业深耕 10 年。我的分享将分为以下三部分:青团社架构演进的历程、青团社如何实现云原生、总结与展望。
262798 94
|
小程序 前端开发 开发者
微信小程序——跳转方式
微信小程序——跳转方式
385 0
|
Java 数据库连接 容器
JSP 教程 之 JSP 生命周期 4
JSP生命周期包括编译、初始化、执行和销毁四个阶段。在编译阶段,JSP转换为servlet。初始化阶段加载并实例化servlet。执行阶段调用服务方法响应请求。销毁阶段调用销毁方法,如`jspDestroy()`,用于资源释放。示例代码展示了`jspInit()`、`_jspService()`和`jspDestroy()`方法在生命周期中的应用。浏览器显示初始化、服务请求和销毁的计数。
153 1
|
Web App开发 编解码 移动开发
React 框架下如何集成 H.265 流媒体视频播放器 EasyPlayer.js?
H5 无插件流媒体播放器 EasyPlayer 属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持 H.264 与 H.265 编码格式,性能稳定、播放流畅,能支持 WebSocket-FLV、HTTP-FLV,HLS(m3u8)、WebRTC 等格式的视频流。在功能上,EasyPlayer 支持直播、点播、录像、快照截图、MP4 播放、多屏播放、倍数播放、全屏播放等特性,并且已实现网页端实时录像、在 iOS 上实现低延时直播等功能,具备较高的可用性和稳定性
515 0
|
存储 缓存 BI
|
存储 机器学习/深度学习 弹性计算
阿里云GPU云服务器常见问题及官方资料解答汇总
阿里云基于EGS平台推出了GPU云服务器,在提供GPU加速能力的同时,保留了与普通ECS实例一致的使用体验。您在创建ECS实例时,选择企业级异构计算规格即可。下面是阿里云GPU云服务器的一些常见问题及官方资料解答汇总,以供大家参考和了解阿里云GPU云服务器。
1543 0
阿里云GPU云服务器常见问题及官方资料解答汇总
|
域名解析 弹性计算 安全
使用阿里云服务器搭建网站全过程真的很简单
阿里云服务器从购买选配,包括CPU内存带宽选择以及配置网站Web环境安装WordPress,网站上线全教程
1866 0
使用阿里云服务器搭建网站全过程真的很简单