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

JavaScriptで矩形数(Pronic Number)を判定する方法を解説

矩形数(Pronic Number)とは?

矩形数(Pronic数)とは、2つの連続する整数の積として表せる数のことです。つまり、次のような形式で表される数値を指します。

n(n + 1)

具体例を挙げると、以下のような数が矩形数に該当します。

  • 0 = 0 × 1
  • 6 = 2 × 3
  • 12 = 3 × 4
  • 20 = 4 × 5
  • 30 = 5 × 6

これらはすべて「ある整数 n と n+1 の掛け算」で表せるため、矩形数と呼ばれます。

矩形数を判定するJavaScript関数

ここでは、引数として受け取った数値が矩形数であれば true を、そうでなければ false を返すJavaScript関数を作成します。

実装の考え方

判定には平方根を利用します。矩形数 n(n+1) の近似値は n² に近いため、対象の数値の平方根の切り捨て値から探索を始め、連続する2つの整数の積が元の数値と一致するかどうかを順番に確認していきます。

サンプルコード

const num = 132;

const isPronic = num => {
    let nearestSqrt = Math.floor(Math.sqrt(num)) - 1;
    while (nearestSqrt * (nearestSqrt + 1) <= num) {
        if (nearestSqrt * (nearestSqrt + 1) === num) {
            return true;
        }
        nearestSqrt++;
    }
    return false;
};

console.log(isPronic(num));

コードの解説

  • Math.floor(Math.sqrt(num)) で、対象の数値の平方根以下の最大の整数を求めます。
  • その値から -1 した位置を起点にして、n × (n + 1) の計算結果が元の数値以下である間ループを回します。
  • 積が元の数値と一致すれば true を返し、ループが終了しても一致しなければ false を返します。

実行結果

132 = 11 × 12 なので、この数値は矩形数です。コンソールには次のように出力されます。

true

まとめ

このように、平方根を活用したシンプルなループ処理によって、ある数値が矩形数(連続する2整数の積)であるかどうかを効率的に判定できます。計算量も小さく、大きな数値に対しても高速に動作するのが特徴です。

  1. JavaScriptで1からnまでのすべての数値で割り切れる最小の数値を求める方法

    問題 数値 n を引数として受け取る JavaScript 関数を作成する必要があります。この関数は、1 から n までのすべての整数で割り切れる最小の正の整数を求めて返します。 実は、この問題は数学における「最小公倍数(LCM)」を求める問題と同じです。1 から n までのすべての数値の最小公倍数こそが、求めるべき答えとなります。 例 n = 10 の場合を考えてみましょう。2520 という数値は、1・2・3・…・10 のすべての数値で余りなく割り切ることができる、最も小さい数値です。 以下のコードを見てみましょう − const num = 11; const smallestDivis

  2. JavaScriptで桁の和が回文数かどうかを判定する関数を作る方法

    問題概要今回は、数値 num を第1引数(唯一の引数)として受け取る JavaScript 関数を作成します。この関数は、num の各桁の数字を合計した値が回文数(palindrome number)である場合に true を返し、そうでない場合は false を返す必要があります。例えば、関数への入力が次のようだったとします。const num = 781296;このとき、期待される出力は以下の通りです。const output = true;出力の解説781296 の各桁の和を計算すると、7 + 8 + 1 + 2 + 9 + 6 = 33 となります。33 は左右から読んでも同じ値になる