JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで完全平方数を判定する方法

本記事では、数値を受け取り、その数値が完全平方数であるかどうかに基づいてブール値(true / false)を返すJavaScript関数の作成方法について解説します。

完全平方数とは?

完全平方数とは、ある整数を2乗した値と一致する数のことです。例えば、12 × 12 = 144 となるため、144は完全平方数です。同様に、14 × 14 = 196、11 × 11 = 121 も完全平方数に含まれます。

完全平方数の例:

144, 196, 121, 81, 484

実装例

以下のコードでは、1から順に整数の2乗を計算し、対象の数値と一致するかどうかを確認することで、完全平方数かどうかを判定しています。

const num = 484;
const isPerfectSquare = num => {
    let ind = 1;
    while(ind * ind <= num){
        if(ind * ind !== num){
            ind++;
            continue;
        };
        return true;
    };
    return false;
};
console.log(isPerfectSquare(num));

出力結果

コンソールには次のように出力されます:

true

補足:Math.sqrt()を使った効率的な判定方法

上記のループ処理による方法は直感的で分かりやすいですが、数値が非常に大きい場合は処理に時間がかかることがあります。Math.sqrt() を使えば、平方根が整数であるかどうかを直接確認できるため、より効率的に判定できます。

const isPerfectSquare = num => {
    const sqrt = Math.sqrt(num);
    return Number.isInteger(sqrt) && sqrt * sqrt === num;
};
console.log(isPerfectSquare(484)); // true
console.log(isPerfectSquare(500)); // false

用途や扱う数値の規模に応じて、両者の方法を使い分けるとよいでしょう。

  1. 【初心者向け】JavaScriptのfor...ofループの使い方を実例つきで解説

    JavaScriptのfor...ofループは、配列、文字列、配列風オブジェクト(Array-like objects)、NodeListなど、反復可能(イテラブル)なオブジェクトの要素を先頭から順番に1つずつ取り出して処理するための構文です。 インデックスの管理が不要なため、従来のforループやforEachメソッドと比べてコードが簡潔になり、可読性や保守性が向上するというメリットがあります。 for...ofループの基本構文 for (変数 of 反復可能オブジェクト) {   // 各要素に対して実行したい処理 } サンプルコード 次の例では、for...ofループを使って文

  2. JavaScriptの「for...in」ステートメントとは?オブジェクトのプロパティをループ処理する方法を解説

    JavaScriptのfor...in文は、オブジェクトが持つすべてのプロパティ(列挙可能なプロパティ)を順番に取り出して処理するためのループ構文です。オブジェクト内の各キー(プロパティ名)にアクセスしながら、対応する値を取得したい場合に非常に便利です。for...inの基本的な構文for (let 変数名 in オブジェクト) { // 各プロパティに対して実行したい処理 }ループ変数には、各反復ごとにオブジェクトのプロパティ名(キー)が文字列として代入されます。値そのものを取得するには、「オブジェクト[変数名]」のようにブラケット記法を使ってアクセスします。サンプルコード以下は、for