JavaScriptで1からnumまでの自然数の合計を求める関数の実装方法
概要
JavaScriptで、ある数値(例えば num)を受け取り、1からその数値までのすべての自然数の合計(両端の1とnumを含む)を返す関数を作成します。
例えば、num が次のような値だったとします。
const num = 5;
この場合、期待される出力は以下の通りです。
const output = 15;
なぜなら、
1 + 2 + 3 + 4 + 5 = 15
となるからです。
解法:等差数列の和の公式を使う
この問題は、等差数列の和の公式を利用することで、ループ処理なしに効率的に解くことができます。1からnまでの自然数の合計は、次の公式で求められます。
n * (n + 1) / 2
ループで一つずつ足し合わせる方法はO(n)の計算量が必要ですが、この公式を使えばO(1)で計算できるため、大きな数値でも瞬時に結果を得られます。
コード例
const num = 5;
const sumUpto = num => {
const res = (num * (num + 1)) / 2;
return res;
};
console.log(sumUpto(num));
console.log(sumUpto(7));
console.log(sumUpto(45));
console.log(sumUpto(2));
console.log(sumUpto(8));
console.log(sumUpto(99));出力結果
コンソールには次のように出力されます。
15 28 1035 3 36 4950
補足:ループを使った別の実装方法
参考までに、forループを使って同じ結果を得ることもできます。
const sumUptoLoop = num => {
let res = 0;
for (let i = 1; i <= num; i++) {
res += i;
}
return res;
};ただし、この方法は引数の数値が大きくなるほど計算時間が長くなるため、パフォーマンスを重視する場合は前述の公式を使った実装が推奨されます。
-
C++で2から10までのすべての数で割り切れる数を数える方法
問題概要ある整数 num が与えられたとき、1からnumまでの範囲に含まれる数のうち、2、3、4、5、6、7、8、9、10のすべてで割り切れる数がいくつあるかを求めるのが課題です。入力: int num = 10000出力: 2から10までのすべての数で割り切れる数の個数: 3説明: 1から10000までの範囲には、2から10までのすべての数で割り切れる数が3つ存在します。具体的には 2520、5040、7560 の3つです。入力: int num = 20000出力: 2から10までのすべての数で割り切れる数の個数: 7説明: 1から20000までの範囲では、該当する数は7つになります。具体
-
C#でStringDictionaryからすべてのエントリを削除する方法
C#のStringDictionaryからすべてのエントリ(キーと値のペア)を一括で削除するには、Clear()メソッドを使用します。このメソッドを呼び出すと、コレクション内の全要素が削除され、Countプロパティの値は0になります。なお、StringDictionaryではキーは自動的に小文字に変換されて格納される点にも注目してください。以下に具体的なコード例を示します。例1:2つのStringDictionaryを比較してClear()を確認するusing System; using System.Collections; using System.Collections.Speciali