2021年12月11日土曜日

211211

Ruby


ナゴヤ三角形について(1)

この記事は
日曜数学 Advent Calendar 2021 (https://adventar.org/calendars/6887)
の12/11 分として書いております。

ナゴヤ三角形とは、一松 信氏命名の三角形の名称で、
一つの角が60度の、全ての辺の長さが整数の三角形(ただし、正三角形は除く)
のことです。
大学受験数学で頻出のものに、(3, 7, 8)や(5, 7, 8)があります。
辺の長さが互いに素な場合を原始的(primitive)とよびます。

原始的なナゴヤ三角形は、適当な正の整数m, n(0 < n < m)により、
2*m*n+n^2, m^2+m*n+n^2, m^2+2*m*n
もしくは
m^2 - n^2, m^2+m*n+n^2, m^2+2*m*n
のいずれかの形で一通りで表されます。

ここで注意しないといけない事は、
m, nに適当な値を入れると原始的でなくなる
ということです。
(m, n)=1, m-nが3で割り切れない
という条件が必要です。 

これらをもとに、原始的なナゴヤ三角形を計算すると以下のようになります。

def A(n)
  ary = []
  (1..n).each{|i|
    (i + 1..n).each{|j|
      if i.gcd(j) == 1 && (i - j) % 3 > 0
        x, y, z = j * j, i * j, i * i
        b = x + y + y
        c = x + y + z 
        a = y + y + z
        ary << [    a, b, c]
        ary << [b - a, b, c]
      end
    }
  }
  ary
end

n = 10
A(n).sort.each{|i| p i}

出力結果
[3, 8, 7]
[5, 8, 7]
[5, 21, 19]
[7, 15, 13]
[7, 40, 37]
[8, 15, 13]
[9, 65, 61]
[11, 35, 31]
[11, 96, 91]
[13, 48, 43]
[13, 133, 127]
[15, 176, 169]
[16, 21, 19]
[16, 55, 49]
[17, 80, 73]
[17, 225, 217]
[19, 99, 91]
[19, 280, 271]
[24, 35, 31]
[24, 119, 109]
[32, 77, 67]
[32, 207, 193]
[33, 40, 37]
[35, 48, 43]
[39, 55, 49]
[40, 91, 79]
[40, 117, 103]
[45, 77, 67]
[51, 91, 79]
[55, 112, 97]
[56, 65, 61]
[56, 171, 151]
[57, 112, 97]
[63, 80, 73]
[65, 153, 133]
[69, 160, 139]
[77, 117, 103]
[80, 99, 91]
[85, 96, 91]
[88, 153, 133]
[91, 160, 139]
[95, 119, 109]
[115, 171, 151]
[120, 133, 127]
[161, 176, 169]
[175, 207, 193]
[208, 225, 217]
[261, 280, 271]

0 件のコメント:

コメントを投稿

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