kostumブログ

勉強したことやノート代わりのアウトプットに使っています。

Project Euler 001

環境

問題

 10未満の自然数のうち、3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4 つがあり、これらの合計は 23 になる。同じようにして、1000 未満の 3 か 5 の倍数になっている数字の合計を求めよ。

考え方

  1. 0 ~ 1000 までの数字を作る
  2. 1.の数字に対して、 3 もしくは 5 の倍数の時の数字を取得する
  3. 2.で取得した数字を配列に格納する
  4. 2.~ 3.を 1000 まで繰り返す
  5. 配列内の数字の和を計算する

コード

const question001 = () => { 
  const list: number[] = [];
  for (let i = 1; i < 1000; i++) { 
    if(i % 3 == 0 || i % 5 == 0) { 
      list.push(i) 
    } 
  }
  return list.reduce((sum, num) => { 
    return sum + num; 
  }) 
} 

説明

  • まず、3 もしくは 5 の倍数の時の数字を格納するための配列を作成する
  • 0 ~ 1 までの数字を作るには、for ループを使い、1000 までの数字を作る
  • 1000 までの数字に対して、3 もしくは 5 の倍数の時の条件分岐を考慮する
  • 条件に合致するとき、その時の数字をlistに格納する
  • 最後に、list内の数字の和を返す