JavaScript中判断一个数是否为两个完全平方数之和


完全平方数

在数学中,如果一个自然数可以表示为另一个自然数的平方,则称其为完全平方数。

例如,9、16、81、289都是完全平方数。

我们需要编写一个JavaScript函数,它只接收一个自然数num作为参数。该函数应该确定是否存在两个这样的数m和n,使得:

(m * m) + (n * n) = num

如果存在这样的数,我们的函数应该返回true,否则返回false。

例如:

如果输入数字是:

const num = 389;

则输出应该是:

const output = true;

因为389 = (17 * 17) + (10 * 10)

示例

代码如下:

 在线演示

const num = 389;
const canSumSquares = (num = 2) => {
   let left = 0, right = Math.floor(Math.sqrt(num));
   while(left <= right){
      if (left * left + right * right === num) {
         return true;
      } else if (left * left + right * right < num) {
         left++;
         } else {
            right--;
      };
   };
   return false;
};
console.log(canSumSquares(num));

输出

控制台输出将是:

true

更新于:2021年3月3日

193 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.