【JavaScript】数値を割り切る桁の個数を数える方法
本記事では、数値を第1引数(唯一の引数)として受け取るJavaScript関数の作成方法を解説します。この関数は、その数値自身を余りなく割り切る桁の個数を数えて返すものです。
問題の概要
例えば、入力される数値が次の場合を考えてみましょう。
const num = 148;
このとき、期待される出力は以下の通りです。
const output = 2;
理由は簡単です。148は 1 でも 4 でも割り切れますが、8 では割り切れないためです。したがって、割り切る桁は「1」と「4」の2つとなり、答えは2になります。
実装コード
それでは、実際のコードを見てみましょう。
const num = 148;
const countDividingDigits = (num = 1) => {
let count = 0;
const numStr = String(num);
for(let i = 0; i < numStr.length; i++){
const curr = +numStr[i];
if(num % curr === 0){
count++;
};
};
return count;
};
console.log(countDividingDigits(num));
コードの解説
この関数の処理の流れは以下の通りです。
- 数値を文字列に変換:
String(num)を使うことで、各桁にインデックスでアクセスできるようになります。 - 各桁を順番にチェック: ループで各桁を取り出し、単項プラス演算子
+によって再び数値に変換します。 - 割り切れるか判定: 剰余演算子
%を使い、元の数値をその桁で割った余りが0であればカウンターを増やします。 - 結果を返す: 最後にカウントされた数を返します。
出力結果
コンソールには次のように出力されます。
2
まとめ
数値を一度文字列に変換して各桁を走査するというアプローチにより、シンプルかつ直感的に「割り切る桁の個数」を求めることができます。計算量は桁数に比例するため、非常に効率的なアルゴリズムです。
-
JavaScriptで指定範囲内の乱数をn個生成する方法
JavaScriptでは、数値 n と、範囲(最小値・最大値)を表す2つの数値からなる配列を受け取り、その範囲内に収まる n 個のランダムな値を配列として返す関数が必要になる場面があります。 本記事では、Math.random() を活用してこのような関数を実装する方法を、実際のコード例とともにわかりやすく解説します。 実装コード まずは完成版のコードを見てみましょう。 { const res = []; for(let i = 0; i < num; ){ const random = randomBetween(range[0], range[1]
-
JavaScriptで数値の各桁の数字を一つずつ分割表示する方法
はじめに この記事では、ユーザーが入力した数値を検証し、有効な数値であればその各桁の数字を画面に一つずつ表示するJavaScriptプログラムの作り方を解説します。 動作イメージ ページ上のボタンをクリックすると入力ダイアログが開き、そこに数値を入力してOKを押すと、入力された数値の各桁が一行ずつ画面に出力される仕組みです。 例えば、入力が次のような場合—— 43354 画面には次のように表示されます。 4 3 3 5 4 完成コード HTML <!DOCTYPE html> <html> <head> &n