JavaScriptで3または5の倍数の合計を求める方法
本記事では、引数として上限値(リミット)となる数値を1つ受け取り、その上限未満の自然数のうち「3または5の倍数」に該当する数値をすべて合計して返すJavaScript関数を作成します。
例:
上限が10の場合、条件を満たす数は 3、5、6、9 の4つなので、合計は 3+5+6+9 = 23 となります。
コード例
以下が実際のコードです。
const sumOfMultiple = (limit = 10) => {
let i, sum = 0;
for (i = 3; i < limit; i += 1) {
if (i % 3 === 0 || i % 5 === 0) {
sum += i;
};
};
return sum;
}
console.log(sumOfMultiple(1000));
console.log(sumOfMultiple(10));
console.log(sumOfMultiple(100));実行結果
コンソールには以下のように出力されます。
233168 23 2318
コードの解説
この関数では、まず合計を格納する変数 sum を0で初期化し、forループを使って3から上限値未満までの数値を順番にチェックしていきます。
剰余演算子(%)を使用し、対象の数値を3または5で割った余りが0であれば、その数値は倍数であると判断できます。条件を満たした数値だけをsumに加算し、ループが完了した時点でsumを返すことで、条件に一致するすべての自然数の合計が求まります。
なお、デフォルト引数として limit = 10 を設定しているため、引数なしで呼び出した場合でもエラーにならず、上限10として動作する点もポイントです。
-
JavaScriptでエレベータが移動した階数の合計を求める方法
問題 ある時間帯において、建物のエレベータが停止した階数を要素として持つ配列を受け取り、その間にエレベータが移動した階数の合計を返すJavaScript関数を作成する必要があります。 解決のアプローチ この問題は、配列内の隣り合う2つの階数の差の絶対値を順番に足し合わせることで解決できます。例えば、7階から1階へ移動すれば6階分、1階から7階へ戻ればさらに6階分とカウントしていきます。最終的に、これらの差をすべて合計した値が、エレベータがカバーした総階数となります。 コード例 以下がその実装コードです。 const arr = [7, 1, 7, 1]; const floorsCovere
-
JavaScriptで合計が0以上となる最長部分配列を見つけるアルゴリズム
問題の概要今回は、-1から1の範囲の整数のみを含む配列を受け取り、その中から合計が0以上になる最長の連続する部分配列(サブアレイ)の長さを返すJavaScript関数を作成します。一見単純な問題に見えますが、全ての組み合わせを総当たりで調べると計算量がO(n²)となり、配列が大きくなると非効率です。そこで本記事では、累積和(プレフィックスサム)の考え方を活用し、線形時間O(n)で解くスマートな手法を紹介します。解法のコードconst arr = [-1, -1, 0, 1, 1, -1, -1, -1]; const longestPositiveSum = (arr = []) =>