在JavaScript中不使用Math.sqrt()和Only For循环求范围内数字的平方根

x4shl7ld  于 2023-01-29  发布在  Java
关注(0)|答案(4)|浏览(146)
function getNumbersWithSquareRoots(max) {
  const arrNum = [];
  for(let i = 0; i < max; i++) {
    arrNum.push(i);
  }
  return arrNum;
}

只能将JavaScript和for循环或for of或for in与if else沿着使用。
这会将0到200的数字推入空数组。我需要代码做的是遍历数组并获取每个可以是平方根的数字。例如:如果Max = 200,那么从0到200的每一个数都可以找到平方根为整数的数。2数组将返回[0,1,4,9,16等......,直到196,因为196之后的任何数都不是平方根]。3我知道2**2可以找到平方根。
我甚至尝试过使用Math.sqrt(),但最终得到的只是一个被平方的数字数组。

function getNumbersWithSquareRoots(max) {
  const arrNum = [];
  for (let i = 0; i < max; i++) {
    arrNum.push(Math.sqrt(i));
  }
  return arrNum;
}
fhg3lkii

fhg3lkii1#

您可以对每个数字求平方,然后检查结果是否小于最大值。

function getNumbersWithSquareRoots(max) {
  const arrNum = [];
  for (let i = 0; i < max; i++) {
    var square = i * i;
    if (square < max) {
        arrNum.push(square);
    }
    else {
        break;
    }
  }
  return arrNum;
}

else的作用只是在超出最大值时跳出循环。

v64noz0r

v64noz0r2#

这会将0到200的数字推入空数组中,我需要代码做的是遍历数组并获取每个可以是平方根的数字。
不,这是错误的方法。不要遍历200个数字并试图找出其中哪个是平方数(有整数平方根)。相反,循环并首先将平方数放入数组中!这要简单得多,也更有效。

hpxqektj

hpxqektj3#

你甚至可以不用if和任何乘法运算:

function getNumbersWithSquareRoots(max) {
  const arrNum = [];
  for (let sq=i=0; (sq+=i+i+1) < max; i++) arrNum.push(sq);
  return arrNum;
}

console.log(getNumbersWithSquareRoots(200))
3okqufwl

3okqufwl4#

function getNumbersWithSquareRoots(max) {
  const arrNum = [];
  for (let i = 0; i < max; i++) {
    var square = i * i;
    if (square < max) {
       arrNum.push(square);
   }
  }
return arrNum;
}

这最终为我试图完成的任务起到了作用。谢谢大家。

相关问题