JavaScriptでプロニック数(矩形数)を判定する関数の実装方法
プロニック数(矩形数)とは、「2つの連続する整数の積」で表される数のことです。つまり、n(n + 1) の形式で表現できる数を指します。
例えば、12 は 3 × 4 = 12 と表せるためプロニック数ですが、10 は連続する2つの整数の積では表せないため、プロニック数ではありません。
本記事では、与えられた数値がプロニック数であれば true を、そうでなければ false を返すJavaScript関数を実装していきます。
判定アルゴリズムの考え方
判定には以下の手順を使用します。
1. 対象の数値の平方根を求め、その小数点以下を切り捨てた値から探索を開始します。
2. n × (n + 1) の計算結果が対象の数値以下である間、ループを続けます。
3. 計算結果が対象の数値と一致すれば true を返し、ループが終了しても一致しなければ false を返します。
コード例
const num = 90;
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)) によって対象の数値の平方根以下で最大の整数を取得し、そこから候補となる整数 n を順に増やしながら n × (n + 1) が num と一致するかどうかを確認しています。90 の場合は 9 × 10 = 90 となるため、プロニック数として判定されます。
出力結果
コンソールには以下のように出力されます。
true
このように、平方根を起点とした効率的な探索により、大きな数値でも高速にプロニック数かどうかを判定することができます。
-
JavaScriptで1からnまでのすべての数値で割り切れる最小の数値を求める方法
問題 数値 n を引数として受け取る JavaScript 関数を作成する必要があります。この関数は、1 から n までのすべての整数で割り切れる最小の正の整数を求めて返します。 実は、この問題は数学における「最小公倍数(LCM)」を求める問題と同じです。1 から n までのすべての数値の最小公倍数こそが、求めるべき答えとなります。 例 n = 10 の場合を考えてみましょう。2520 という数値は、1・2・3・…・10 のすべての数値で余りなく割り切ることができる、最も小さい数値です。 以下のコードを見てみましょう − const num = 11; const smallestDivis
-
JavaScriptで数値に序数接尾辞(st・nd・rd・th)を追加する方法
問題JavaScriptで関数を作成する必要があります。この関数は、数値 num を最初の(唯一の)引数として受け取ります。関数の役割は、英語の序数表記のルールに従って、数値に「st」「nd」「rd」「th」という接尾辞を追加することです。具体的なルールは以下の通りです。一の位が1で終わる数値には「st」を使用します(例:1st、発音はfirst)一の位が2で終わる数値には「nd」を使用します(例:92nd、発音はninety-second)一の位が3で終わる数値には「rd」を使用します(例:33rd、発音はthirty-third)上記ルールの例外として、下二桁が11・12・13となる数値に