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

【JavaScript】数値の約数の個数を数える関数の実装方法

本記事では、数値を引数として受け取り、その数値を割り切ることができる整数(約数)の個数を返すJavaScript関数の実装方法を解説します。

例えば、入力が12の場合、12の約数は以下のようになります。

1, 2, 3, 4, 6, 12

この場合、約数は全部で6個存在するため、関数の出力は 6 となります。

約数カウント関数の実装例

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

const num = 12;
const countFactors = num => {
    let count = 0;
    let flag = 2;
    while(flag <= num / 2){
        if(num % flag++ !== 0){
            continue;
        };
        count++;
    };
    return count + 2;
};
console.log(countFactors(num));
console.log(countFactors(2));
console.log(countFactors(454));
console.log(countFactors(99));

コードの解説

この関数の動作は以下の通りです。

  • ループ変数 flag を2から始め、num / 2 まで順番に増やしながら、num を割り切れるかどうかを判定します。
  • 割り切れない場合は continue で次の候補へスキップし、割り切れた場合はカウントを1つ増やします。
  • 最終的な戻り値は count + 2 としています。これは、ループ範囲外にある「1」と「num自身」という必ず存在する2つの約数を加算するためです。

このように探索範囲を num / 2 までに抑えることで、無駄な計算を省き、比較的効率的に約数の個数を求めることができます。ただし、より高速化したい場合は、平方根 √num までの探索に絞る手法も検討するとよいでしょう。

出力結果

上記のコードを実行すると、コンソールには以下のように表示されます。

6
2
4
6

それぞれ、12・2・454・99 の約数の個数に対応しています。

  1. JavaScriptのNumber()関数とは?使い方とサンプルコードを解説

    JavaScriptのNumber()関数は、引数として渡された値やオブジェクトを、それに対応する数値へ変換するための関数です。真偽値や文字列型の数字、さらにはDateオブジェクトなども数値に変換できるため、データ型の変換処理において非常に便利な組み込み関数の一つです。例えば、Number(true)は「1」、Number(false)は「0」を返します。また、数字のみで構成された文字列「149」を渡せば数値の149に変換され、new Date()で生成した日付オブジェクトを渡すと、1970年1月1日からの経過ミリ秒数が返されます。以下に、Number()関数の動作を確認できるサンプルコードを

  2. JavaScriptで数字パターンを表示する方法【初心者向けサンプルコード】

    本記事では、テキスト入力欄とボタンを備えたJavaScript・HTMLプログラムの作成方法を解説します。ユーザーが入力欄に任意の数値(例:5)を入力してボタンをクリックすると、画面に以下のような数字パターンが表示される仕組みです。(n = 5 の場合の出力例)01 01 02 01 02 03 01 02 03 04 01 02 03 04 05仕組みのポイントこのパターンは二重ループ(ネストしたforループ)を使うことで実現できます。外側のループが「行」を制御し、内側のループがその行に表示する「数字の個数」を制御します。i 行目には 1 から i までの数字が順番に出力されるため、行が進む