You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测JavaScript随机数数组元素是否两两互为倍数

实现方案

核心检测逻辑

核心思路是遍历数组所有两两组合,判断较大值是否能被较小值整除,只要存在任意一组满足该条件,就说明数组不符合要求。

function hasMultiplePair(arr) {
  // 先升序排序,避免重复判断两个数的大小
  const sorted = arr.sort((a, b) => a - b);
  const len = sorted.length;
  for (let i = 0; i < len; i++) {
    for (let j = i + 1; j < len; j++) {
      // 较大值对较小值取模为0,说明存在倍数关系
      if (sorted[j] % sorted[i] === 0) {
        return true;
      }
    }
  }
  return false;
}

函数返回true代表数组存在互为倍数的元素,需要重新生成;返回false则符合要求。

完整生成+校验示例

搭配随机数生成逻辑使用,示例为生成1-100范围内的符合要求的5元素数组:

// 生成指定范围的随机正整数
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

function generateValidArray(length = 5, min = 1, max = 100) {
  let arr;
  do {
    arr = Array.from({length}, () => getRandomInt(min, max));
    // 提前去重:重复元素天然是1倍关系,直接排除
    arr = [...new Set(arr)];
  } while (arr.length !== length || hasMultiplePair(arr));
  return arr;
}

// 调用示例
const result = generateValidArray();
console.log(result);

注意事项

  • 如果随机数取值范围过小,可能会出现死循环,建议取值范围至少是目标数组长度的3倍以上,降低碰撞概率
  • 上述代码默认处理正整数场景,如果需要兼容小数、负数,需要调整取模判断逻辑

内容的提问来源于stack exchange,提问作者LOLapalooza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:36:03