JavaScriptで整然数(Tidy Number)を判定する方法
整然数(Tidy Number)とは?
整然数とは、各桁の数字が左から右へ向かって非減少順(前の桁より小さくなることがない並び)になっている数のことを指します。本記事では、与えられた数値が整然数かどうかを判定するJavaScript関数の実装方法を解説します。
整然数の例
489 …… 4 ≤ 8 ≤ 9 なので整然数 234557 …… 2 ≤ 3 ≤ 4 ≤ 5 ≤ 5 ≤ 7 なので整然数 34535 …… 途中で 5 の次に 3 が来るため整然数ではない
判定アルゴリズムの考え方
判定方法はシンプルです。数値を下の桁から順に取り出し、隣り合う桁どうしを比較していきます。もし前の桁より大きな数字が現れた時点で、その数は整然数ではないと判断できます。すべての桁を確認して問題がなければ true を返します。
ここでは、再帰呼び出しを使ったコンパクトな実装例を紹介します。
サンプルコード
const num = 234789;
const isTidy = (num, last = 10) => {
if (num) {
if (num % 10 > last) {
return false;
}
return isTidy(Math.floor(num / 10), num % 10);
}
return true;
};
console.log(isTidy(num));実行結果
コンソールには次のように出力されます。
true
コードの解説
- num % 10:数値の一番下の桁(1の位)を取り出します。
- Math.floor(num / 10):一番下の桁を除いた残りの数値を作ります。
- last 引数:直前に確認した桁の値を保持します。初期値を 10 としているため、最初の比較は必ず条件を満たします。
この処理を再帰的に繰り返し、num が 0 になった時点ですべての桁が非減少順だったことが確定するので true を返します。一方、処理の途中で一度でも「現在の桁 > 前の桁」という組み合わせが見つかれば、その場で false を返して判定を終了します。
-
JavaScriptで数値が三角数かどうかを判定する方法
三角数(Triangular Number)とは? 三角数とは、点を正三角形の形に敷き詰めたときに現れる数のことです。n番目の三角数は「1からnまでの自然数の合計」として表され、次の公式で求められます。 Tn = n(n+1) / 2 具体的な三角数は 1, 3, 6, 10, 15, 21, 28 … と続きます。例えば 10 は、各辺に4個の点を配置した正三角形を構成できるため、三角数です。 問題 数値を引数として受け取り、その数値が三角数であれば true を、そうでなければ false を返すJavaScript関数を実装します。 判定の考え方 n(n+1)/2 = num となる正
-
JavaScriptで指定した数より大きい最小の素数を見つける方法
問題JavaScriptで、ある数値 n を受け取る関数を作成することを考えます。この関数は、n より大きい数の中で最小となる素数を返す必要があります。アプローチまず、与えられた数が素数かどうかを判定する補助関数 isPrime を用意します。素数判定では、2 からその数の平方根まで順に割り切れるかを確認すれば十分です。平方根以降の因数は必ずペアが存在するため、ここまで調べれば判定できます。これにより計算量を大幅に抑えられます。次に、nextPrime 関数の中で、引数の数値を1ずつ増やしながら isPrime で判定を行い、最初に見つかった素数を返します。コード例以下が実際のコードです。co