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

【JavaScript】0〜nの各数値の2乗に含まれる特定の桁の出現回数を数える方法

問題の概要

今回は、整数 n(n >= 0)と桁の数字 d(0 <= d <= 9)を引数として受け取る JavaScript 関数を作成します。

この関数は、0 から n までのすべての数値 k(0 <= k <= n)についてそれぞれ 2 乗を計算し、その結果(k**2)を書き表したときに現れる桁 d の出現回数の合計を返すものです。

たとえば n = 25、d = 1 の場合、「1, 16, 100, 121, 144, 169, 196, 361, 441」などの 2 乗値の中に含まれる「1」の個数をすべて合計することになります。

サンプルコード

以下が実際の実装コードです。

const n = 25;
const d = 1;
const countDigits = (n, d) => {
    let k = 0, count = 0;
    d = d.toString();
    while (k <= n) {
        let a = 0;
        let s = (k*k).toString();
        for(let i = 0; i < s.length; i++)
            if(s[i] == d)
                a++;
        if (a > 0) {
            count += a;
        };
        k++;
    };
    return count;
};
console.log(countDigits(n, d));

実行結果

11

コードの解説

この関数の処理の流れは以下の通りです。

  • まず、比較対象となる桁 d を toString() メソッドで文字列に変換しておきます。
  • 変数 k を 0 から n まで順に増やしながら、各数値の 2 乗(k*k)を計算して文字列化します。
  • 2 乗値の文字列を先頭から 1 文字ずつ調べ、桁 d と一致する文字があればカウントします。
  • 見つかった回数を累積変数 count に加算し、ループ終了後に合計値を返します。

このように、数値を一度文字列に変換して 1 文字ずつ比較するシンプルなアプローチにより、指定した桁の出現回数を効率的に数えることができます。コードは短く直感的なので、初心者の練習問題としても最適です。

  1. JavaScriptで長方形内に埋め込まれた正方形の周囲長の合計を求める方法

    問題 下図のように、1つの長方形の中に正方形が5つ埋め込まれている状況を考えてみましょう。 このとき、それぞれの正方形の周囲長は次のようになります。 4 + 4 + 8 + 12 + 20 = 48 単位 一見すると複雑な計算が必要そうに思えますが、よく観察すると各正方形の一辺の長さがフィボナッチ数列(1, 1, 2, 3, 5, ...)に従っていることが分かります。つまり、n個の正方形が埋め込まれている場合、周囲長の合計は「最初のn項のフィボナッチ数の総和 × 4」で求められるのです。 そこで本記事では、数値 n を引数として受け取り、n個の正方形が埋め込まれた場合の周囲長の合計を返す

  2. JavaScriptで範囲内の「1に収束する素数」を数える方法

    問題概要 2つの数値からなる範囲配列を受け取るJavaScript関数を作成します。この関数は、範囲内にある素数のうち、各桁の数字の2乗の和を繰り返し計算すると最終的に1に到達する数の個数を返します。 たとえば23は素数であり、次のように計算が進みます。 22 + 32 = 13 12 + 32 = 10 12 + 02 = 1 最終的に1になったため、23は条件を満たす有効な数です。なお、この性質を持つ数は一般に「ハッピー数」と呼ばれ、素数であるハッピー数は「ハッピー素数」として知られています。 コード例 以下が実際のコードです − const range = [2, 212]; Strin