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