2021年12月13日月曜日

211213

Ruby


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

一つの角が90度の、全ての辺の長さが整数の三角形について考えます。
このうち、辺の長さが互いに素な場合(原始ピタゴラス数)を計算すると以下のようになります。

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

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

出力結果
[3, 4, 5]
[5, 12, 13]
[7, 24, 25]
[9, 40, 41]
[11, 60, 61]
[13, 84, 85]
[15, 8, 17]
[15, 112, 113]
[17, 144, 145]
[19, 180, 181]
[21, 20, 29]
[33, 56, 65]
[35, 12, 37]
[39, 80, 89]
[45, 28, 53]
[51, 140, 149]
[55, 48, 73]
[63, 16, 65]
[65, 72, 97]
[77, 36, 85]
[91, 60, 109]
[99, 20, 101]

2021年12月12日日曜日

211212

Ruby


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

一つの角が120度の、全ての辺の長さが整数の三角形について考えます。
このうち、辺の長さが互いに素な場合を計算すると以下のようになります。

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 << [b - a, a, c]
      end
    }
  }
  ary
end

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

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

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]