2015年12月14日月曜日

151214

Ruby


Euler brick(1)

辺の長さが2500以下のprimitive Euler brickの辺の組を出力してみた。

class Array
  def gcd
    self.inject{|a, b| a.gcd(b)}
  end
end

n = 2500
(1..n).each{|i|
  (i..n).each{|j|
    (j..n).each{|k|
      l0 = Math.sqrt(i * i + j * j).to_i
      if l0 * l0 == i * i + j * j
        l1 = Math.sqrt(j * j + k * k).to_i
        if l1 * l1 == j * j + k * k
          l2 = Math.sqrt(i * i + k * k).to_i
          if l2 * l2 == i * i + k * k
            if [i, j, k].gcd == 1
              l3 = Math.sqrt(i * i + j * j + k * k).to_i
              # 斜辺も整数かどうか?
              p [i, j, k, l3 * l3 == i * i + j * j + k * k]
            end
          end
        end
      end
    }
  }
}

出力結果
[44, 117, 240, false]
[85, 132, 720, false]
[140, 480, 693, false]
[160, 231, 792, false]
[187, 1020, 1584, false]
[240, 252, 275, false]
[429, 880, 2340, false]
[1008, 1100, 1155, false]

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。