Leetcode 1362. 最接近的因数

js版

/**
 * @param {number} num
 * @return {number[]}
 */
var closestDivisors = function (num) {
    const r1 = num + 1;
    const m1 = ~~Math.sqrt(r1);

    const r2 = num + 2;
    const m2 = ~~Math.sqrt(r2);

    if (m1 * m1 === r1) {
      return [m1, m1];
    }
    if (m2 * m2 === r2) {
      return [m2, m2];
    }
    let res = [];
    for (let a = 1; a <= m1; a++) {
      if (r1 % a === 0) {
        if (res.length) {
          if (Math.abs(a - r1 / a) < Math.abs(res[0] - res[1])) {
            res = [a, r1 / a]
          }
        } else {
          res = [a, r1 / a];
        }
      }
    }

    for (let b = 1; b <= m2; b++) {
      if (r2 % b === 0) {
        if (res.length) {
          if (Math.abs(b - r2 / b) < Math.abs(res[0] - res[1])) {
            res = [b, r2/ b]
          }
        } else {
          res = [b, r2 / b];
        }
      }
    }
    return res;
  };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值