JavaScript 实现 1000 以内被 3 或 5 整除的数字之和:两种解法对比
本文介绍在 JavaScript 中求解 1000 以内能被 3 或 5 整除的数字之和的两种方法。第一种采用通用的遍历方式,逐一判断并累加;第二种则利用数学等差数列公式进行优化计算。通过对比两种解法,展示了从基础逻辑到数学优化的编程思路,帮助开发者理解算法效率的差异。
问题背景与解法概述
今天在技术交流群中遇到一道题目:计算 1000 以内所有能被 3 或 5 整除的数字之和。在浏览各种解法时,我发现第二种解法非常巧妙。起初对此感到困惑,但经过深入思考并得到他人指点后,顿时豁然开朗。

常规遍历解法
第一种解法很普遍,就是将1000以内的数都遍历一遍,只要有整除3或者整除5的数,就将其加起来,最终得到一个总的和。
基于等差数列的优化解法
令我感兴趣的是第二种解法,它巧妙地利用了数学中的等差数列性质来简化计算过程。
对于一个公差为 d 的等差数列,其前 n 项的和 S_n 可以通过公式 S_n = n/2 * (a_1 + a_n) 计算得出。

第二种方法的第一步利用了公式 (a_1 + a_n) / 2 * n。以能被 3 整除的数为例,计算式转化为 3 * (1 + 333) * 333 / 2。这一步骤直接计算出了 1000 以内所有能被 3 整除的数字之和。
同理,使用 sum(Math.floor((input - 1) / 5)) * 5 可以计算出 1000 以内所有能被 5 整除的数字之和。然而,由于部分数字(如 15)既能被 3 整除也能被 5 整除,它们在上述两次计算中被重复累加。因此,需要减去这些重复计算的数字之和(即能被 15 整除的数字之和),从而得到 1000 以内能被 3 或 5 整除的数字最终总和。
关于使用 JavaScript 实现求解 1000 以内被 3 或 5 整除的数字之和的内容就介绍到这里,希望上述两种解法能对大家有所帮助!
怎么优化 React 应用性能?避免不必要的重渲染
2026-11-05 12:43:40
怎么利用 Nuxt.js useHead 优化 SEO 与元数据管理
2026-11-05 10:37:58
JS混淆常见手段解析:字符串加密与控制流平坦化还原思路
2026-11-04 19:07:42
JavaScript能在浏览器中直接获取MAC地址吗
2026-11-03 20:34:17
JavaScript策略模式:用对象映射替代if-else分支
2026-11-03 19:46:11
