找到给定数字的最近的平方数

时间:2018-04-17 10:07:48

标签: javascript math

任务是找到正整数n(取自代码新闻)的最近的平方数,nearest_sq(n)。我已经尝试了以下但只是得到一个无限循环。

while(Math.sqrt(n)%1!==0){
    n-- || n++
}
return n;

有人可以通过此代码指出我的逻辑错误吗?

5 个答案:

答案 0 :(得分:3)

这应该非常接近:

const nearest_sq = n => Math.pow(Math.round(Math.sqrt(n)), 2);

console.log(nearest_sq(117)); // 121
console.log(nearest_sq(900)); // 900
console.log(nearest_sq(15)); // 16

答案 1 :(得分:3)

Python程序,用于给定数字的最接近的平方数

from math import sqrt
def nearest_square(num):
         num1 = round(sqrt(num))**2
         return sqrt(num1)
print(nearest_square(48))

答案 2 :(得分:1)

也许它不是最短的方式,但至少我认为代码很容易理解

function nearst_sq(n) {
  var nearstLow = nearst_low(n);
  var nearstHigh = nearst_high(n);

  return n-nearstLow < nearstHigh-n ? nearstLow : nearstHigh;
}

function nearst_high(n) {
  if (Math.sqrt(n)%1 === 0) {
    return n;
  }

  return nearst_high(++n);
}

function nearst_low(n) {
  if (Math.sqrt(n)%1 === 0) {
    return n;
  }

  return nearst_low(--n);
}

答案 3 :(得分:0)

    function nearestSq(n){
    let i,j;
    for(i=j=n;Math.sqrt(i)%1!=0&&Math.sqrt(j)%1!=0;i++,j--);
      return Math.sqrt(i)%1==0?i:j
    }
    console.log(nearestSq(21));

答案 4 :(得分:0)

一个简单的 Python3 实现

from math import sqrt
nearestSqr = lambda x: round(sqrt(x)) ** 2
print(nearestSqr(99))