JavaScript中检查数字是否完全平方的3种方法

另一个整数的平方所得的数字称为完全平方数。完全平方是可以表示为整数与其自身的乘积的数字。JavaScript中有多种方法可以检查数字是否是完全平方数,

1、使用 Math.sqrt() 函数
检查数字是否为完全平方数的最简单方法是使用Math.sqrt() 函数。如果一个数的平方根结果是一个整数,那么这个数就是一个完全平方数。

示例:如果输入数字是完全平方数(即整数是整数的平方),则返回 true,否则返回 false。它还包括展示其功能的使用示例。

function isPerfectSquare(num) {
    if (num <= 0 || typeof num !== "number") {
        return false;
    }

    const sqrt = Math.sqrt(num);
    return Number.isInteger(sqrt);
}

const number1 = 16;
const number2 = 9;
const number3 = 15;

console.log(`${number1} is perfect square:
${isPerfectSquare(number1)}`);
console.log(`${number2} is perfect square:
${isPerfectSquare(number2)}`);
console.log(`${number3} is perfect square:
${isPerfectSquare(number3)}`);

2、使用for循环
可以使用 for 循环从 1 迭代到数字的平方根,并检查给定数字中是否有任何整数平方结果。

示例:它从 1 开始,迭代可能的平方根,直到迭代器的平方达到指定的数字。如果任意迭代器的平方等于给定整数,则返回 true,显示该数字是完全平方数;如果不是,则返回 false。

function isPerfectSquare(num) {
    // Check for negative and non-numeric input
    if (num <= 0 || typeof num !==
"number") {
        return false;
    }

    
// Loop through potential square roots
    for (let i = 1; i * i <= num; i++) {
        if (i * i === num) {
            return true;
        }
    }

    return false;
}

// Example usage
const number1 = 16;
const number2 = 9;
const number3 = 15;

console.log(`${number1} is perfect square:
${isPerfectSquare(number1)}`);
console.log(`${number2} is perfect square:
${isPerfectSquare(number2)}`);
console.log(`${number3} is perfect square:
${isPerfectSquare(number3)}`);


3、使用二分查找
更优化的方法是使用二分搜索来查找数字的平方根。我们可以通过在每次迭代中将搜索范围减半来缩小搜索范围。

示例:它利用二分搜索方法来查找 1 和 num 之间的任何数字的平方是否等于给定数字。如果找到,则返回true,表明该数是完全平方数;否则,返回 false

function isPerfectSquare3(num) {
    let left = 1;
    let right = num;

    while (left <= right) {
        let mid = Math.floor((left + right) / 2);
        let square = mid * mid;

        if (square === num) {
            return true;
        } else if (square < num) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    return false;
}

const number1 = 16;
const number2 = 9;
const number3 = 15;

console.log(`${number1} is perfect square:
${isPerfectSquare3(number1)}`);
console.log(`${number2} is perfect square:
${isPerfectSquare3(number2)}`);
console.log(`${number3} is perfect square:
${isPerfectSquare3(number3)}`);