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用途や扱う数値の規模に応じて、両者の方法を使い分けるとよいでしょう。
-
【初心者向け】JavaScriptのfor...ofループの使い方を実例つきで解説
JavaScriptのfor...ofループは、配列、文字列、配列風オブジェクト(Array-like objects)、NodeListなど、反復可能(イテラブル)なオブジェクトの要素を先頭から順番に1つずつ取り出して処理するための構文です。 インデックスの管理が不要なため、従来のforループやforEachメソッドと比べてコードが簡潔になり、可読性や保守性が向上するというメリットがあります。 for...ofループの基本構文 for (変数 of 反復可能オブジェクト) { // 各要素に対して実行したい処理 } サンプルコード 次の例では、for...ofループを使って文
-
JavaScriptの「for...in」ステートメントとは?オブジェクトのプロパティをループ処理する方法を解説
JavaScriptのfor...in文は、オブジェクトが持つすべてのプロパティ(列挙可能なプロパティ)を順番に取り出して処理するためのループ構文です。オブジェクト内の各キー(プロパティ名)にアクセスしながら、対応する値を取得したい場合に非常に便利です。for...inの基本的な構文for (let 変数名 in オブジェクト) { // 各プロパティに対して実行したい処理 }ループ変数には、各反復ごとにオブジェクトのプロパティ名(キー)が文字列として代入されます。値そのものを取得するには、「オブジェクト[変数名]」のようにブラケット記法を使ってアクセスします。サンプルコード以下は、for