kostumブログ

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

project Euler 009

環境

問題

ピタゴラス数(ピタゴラスの定理を満たす自然数)とは a < b < c で以下の式を満たす数の組である.

a^2 + b^2 = c^2

例えば, 32 + 42 = 9 + 16 = 25 = 52 である. a + b + c = 1000 となるピタゴラスの三つ組が一つだけ存在する.これらの積 abc を計算しなさい.

考え方

  1. 変数 a , b を設定する
  2. c = 1000 - a - b を設定する
  3. a と b をそれぞれ 1 から 1000 まで数え上げる
  4. a^2 + b^2 = (1000 - a - b)^2 である時の a * b * c を計算する

コード

let a = 1;
let b = 1;
const teisu = 1000;
let c = teisu - a - b;
for (let i = a; i <= teisu; i++) {
  for (let j = b; j <= teisu; j++) {
    if (i * i + j * j === (teisu - i - j) * (teisu - i - j)) {
      return i * j * (teisu - i - j);
    }
  }
}

説明

  • 式の条件より、変数 a , b , c を設定する
  • a , b は 1000 まで数え上げる(1000 という数字は、a + b + c = 1000 であり、変数 a , b , c が自然数であることから、それぞれの変数は1000以下であることがわかる)
  • 数え上げの中で、式の条件 a^2 + b^2 = (1000 - a - b)^2 を満たすとき、a * b * c を返り値として計算する