【JavaScript】各桁の積と合計の絶対差を求める方法
概要
JavaScriptでは、正の整数を唯一の引数として受け取る関数を作成できます。この関数は、まずその数値の各桁の合計を計算し、次に各桁の積を計算します。そして最後に、積と合計の絶対差を結果として返します。
具体例
入力する数値が次の場合:
const num = 12345;
各桁の合計は 1 + 2 + 3 + 4 + 5 = 15、各桁の積は 1 × 2 × 3 × 4 × 5 = 120 となります。したがって、絶対差は |120 − 15| = 105 となり、出力は次のようになります。
const output = 105;
コード例
実際のコードは以下の通りです。
const num = 12345;
// 各桁の積を再帰的に求める関数
const product = (num, res = 1) => {
if(num){
return product(Math.floor(num / 10), res * (num % 10));
}
return res;
};
// 各桁の合計を再帰的に求める関数
const sum = (num, res = 0) => {
if(num){
return sum(Math.floor(num / 10), res + (num % 10));
}
return res;
};
// 積と合計の絶対差を返す関数
const productSumDifference = (num = 1) => {
return Math.abs(product(num) - sum(num));
};
console.log(productSumDifference(num));
コードの解説
product 関数と sum 関数は、どちらも再帰処理を利用しています。仕組みは以下の通りです。
num % 10:数値の一番右の桁(1の位)を取り出します。Math.floor(num / 10):取り出した桁を除いた残りの数値を作り、処理対象を一桁ずつ減らしていきます。numが0になった時点で、これまで累積してきたresを結果として返します。
積を求める場合は初期値を 1 として乗算を繰り返し、合計を求める場合は初期値を 0 として加算を繰り返す点に注目してください。
最後に productSumDifference 関数が両方の結果を受け取り、Math.abs() を使って絶対差を計算して返します。
実行結果
コンソールには以下のように出力されます。
105
-
【JavaScript】数値の各桁の「和」と「積」の差を求める方法
本記事では、JavaScript を使って、ある数値の各桁の合計(和)と各桁の乗算結果(積)の差を求める方法を解説します。最終的には、その差の絶対値を返す関数を作成します。 課題の内容 数値 n を引数として受け取る JavaScript の関数を作成します。この関数の役割は、次のとおりです。 数値を構成するすべての桁の合計を計算する 数値を構成するすべての桁の積を計算する 両者の差の絶対値を返す 例えば、数値が 434312 の場合、各桁の合計は「4 + 3 + 4 + 3 + 1 + 2 = 17」、各桁の積は「4 × 3 × 4 × 3 × 1 × 2 = 288」となり、差の絶対値
-
JavaScriptで数値の階乗の桁数を求める方法
問題JavaScriptで、数値 num を唯一の引数として受け取る関数を作成することを考えます。この関数は、num の階乗(n!)が何桁になるかを計算し、その桁数を返す必要があります。たとえば、関数への入力が次のような場合を考えてみましょう。入力const num = 7;出力const output = 4;出力の解説7! = 5040 であり、5040は4桁の数字であるため、結果は 4 となります。アプローチ:対数を使った賢い計算方法一見すると、階乗を直接計算して文字列の長さを数えればよさそうに思えます。しかし、階乗は極めて急激に増加するため、少し大きな数でもすぐにJavaScriptの