2016年3月12日土曜日

160312(3)

Ruby


ディオファンタスm-項(1)

m 個の自然数の集合{a1, … , am} が、
すべての1 ≦ i < j ≦ m に対し、
ai aj + n が平方数
であるとき、
D(n) ディオファンタスm-項とよぶ。

フェルマーは
D(1) ディオファンタス4-項{1, 3, 8, 120}
を見つけた。
(3 + 1 = 2^2, 8 + 1 = 3^2, 120 + 1 = 11^2, 24 + 1 = 5^2, 360 + 1 = 19^2, 960 + 1 = 31^2)

t が3 の倍数のとき、
D(t) ディオファンタス4-項を見つけ出せそうな
恒等式をindivid 氏より教えてもらった。
http://www.artofproblemsolving.com/community/c3046h1183749_system_with_permutations

数値を代入することで、恒等式が正しいことを確かめてみた。

# 要素がすべて平方数か?
def test(a)
  a.all?{|i| i == Math.sqrt(i).to_i ** 2}
end

n = 4
cnt = 0
(0..n).each{|p0|
  (0..n).each{|t0|
    (0..n).each{|s0|
      t = 3 * (p0 - t0 - s0) * (p0 + t0 - s0) * (p0 + s0) * (p0 + s0)
      x =     t0 * t0 + 2 * s0 * s0 + 2 * p0 * s0 -     p0 * p0
      y =     t0 * t0 -     s0 * s0 + 2 * p0 * s0 + 2 * p0 * p0
      z = 4 * t0 * t0 - (p0 - s0) * (p0 - s0)
      q = 3 * (p0 + s0) * (p0 + s0)
      if test([x, y, z, q].combination(2).map{|c| c[0] * c[1] + t})
        p [t, [x, y, z, q]]
        cnt += 1
      end
    }
  }
}
# cnt = (n + 1)^3になるはず
p cnt

出力結果
[0, [0, 0, 0, 0]]
[3, [2, -1, -1, 3]]
[48, [8, -4, -4, 12]]
[243, [18, -9, -9, 27]]
[768, [32, -16, -16, 48]]
[0, [1, 1, 4, 0]]
[0, [3, 0, 3, 3]]
[36, [9, -3, 0, 12]]
[216, [19, -8, -5, 27]]
[720, [33, -15, -12, 48]]
[0, [4, 4, 16, 0]]
[-9, [6, 3, 15, 3]]
[0, [12, 0, 12, 12]]
[135, [22, -5, 7, 27]]
[576, [36, -12, 0, 48]]
[0, [9, 9, 36, 0]]
[-24, [11, 8, 35, 3]]
[-60, [17, 5, 32, 12]]
[0, [27, 0, 27, 27]]
[336, [41, -7, 20, 48]]
[0, [16, 16, 64, 0]]
[-45, [18, 15, 63, 3]]
[-144, [24, 12, 60, 12]]
[-189, [34, 7, 55, 27]]
[0, [48, 0, 48, 48]]
[3, [-1, 2, -1, 3]]
[0, [3, 3, 0, 12]]
[27, [11, 2, -1, 27]]
[192, [23, -1, -4, 48]]
[675, [39, -6, -9, 75]]
[0, [0, 3, 3, 3]]
[-12, [4, 4, 4, 12]]
[0, [12, 3, 3, 27]]
[144, [24, 0, 0, 48]]
[600, [40, -5, -5, 75]]
[-9, [3, 6, 15, 3]]
[-48, [7, 7, 16, 12]]
[-81, [15, 6, 15, 27]]
[0, [27, 3, 12, 48]]
[375, [43, -2, 7, 75]]
[-24, [8, 11, 35, 3]]
[-108, [12, 12, 36, 12]]
[-216, [20, 11, 35, 27]]
[-240, [32, 8, 32, 48]]
[0, [48, 3, 27, 75]]
[-45, [15, 18, 63, 3]]
[-192, [19, 19, 64, 12]]
[-405, [27, 18, 63, 27]]
[-576, [39, 15, 60, 48]]
[-525, [55, 10, 55, 75]]
[48, [-4, 8, -4, 12]]
[27, [2, 11, -1, 27]]
[0, [12, 12, 0, 48]]
[75, [26, 11, -1, 75]]
[432, [44, 8, -4, 108]]
[36, [-3, 9, 0, 12]]
[0, [3, 12, 3, 27]]
[-48, [13, 13, 4, 48]]
[0, [27, 12, 3, 75]]
[324, [45, 9, 0, 108]]
[0, [0, 12, 12, 12]]
[-81, [6, 15, 15, 27]]
[-192, [16, 16, 16, 48]]
[-225, [30, 15, 15, 75]]
[0, [48, 12, 12, 108]]
[-60, [5, 17, 32, 12]]
[-216, [11, 20, 35, 27]]
[-432, [21, 21, 36, 48]]
[-600, [35, 20, 35, 75]]
[-540, [53, 17, 32, 108]]
[-144, [12, 24, 60, 12]]
[-405, [18, 27, 63, 27]]
[-768, [28, 28, 64, 48]]
[-1125, [42, 27, 63, 75]]
[-1296, [60, 24, 60, 108]]
[243, [-9, 18, -9, 27]]
[192, [-1, 23, -4, 48]]
[75, [11, 26, -1, 75]]
[0, [27, 27, 0, 108]]
[147, [47, 26, -1, 147]]
[216, [-8, 19, -5, 27]]
[144, [0, 24, 0, 48]]
[0, [12, 27, 3, 75]]
[-108, [28, 28, 4, 108]]
[0, [48, 27, 3, 147]]
[135, [-5, 22, 7, 27]]
[0, [3, 27, 12, 48]]
[-225, [15, 30, 15, 75]]
[-432, [31, 31, 16, 108]]
[-441, [51, 30, 15, 147]]
[0, [0, 27, 27, 27]]
[-240, [8, 32, 32, 48]]
[-600, [20, 35, 35, 75]]
[-972, [36, 36, 36, 108]]
[-1176, [56, 35, 35, 147]]
[-189, [7, 34, 55, 27]]
[-576, [15, 39, 60, 48]]
[-1125, [27, 42, 63, 75]]
[-1728, [43, 43, 64, 108]]
[-2205, [63, 42, 63, 147]]
[768, [-16, 32, -16, 48]]
[675, [-6, 39, -9, 75]]
[432, [8, 44, -4, 108]]
[147, [26, 47, -1, 147]]
[0, [48, 48, 0, 192]]
[720, [-15, 33, -12, 48]]
[600, [-5, 40, -5, 75]]
[324, [9, 45, 0, 108]]
[0, [27, 48, 3, 147]]
[-192, [49, 49, 4, 192]]
[576, [-12, 36, 0, 48]]
[375, [-2, 43, 7, 75]]
[0, [12, 48, 12, 108]]
[-441, [30, 51, 15, 147]]
[-768, [52, 52, 16, 192]]
[336, [-7, 41, 20, 48]]
[0, [3, 48, 27, 75]]
[-540, [17, 53, 32, 108]]
[-1176, [35, 56, 35, 147]]
[-1728, [57, 57, 36, 192]]
[0, [0, 48, 48, 48]]
[-525, [10, 55, 55, 75]]
[-1296, [24, 60, 60, 108]]
[-2205, [42, 63, 63, 147]]
[-3072, [64, 64, 64, 192]]
125

0 件のコメント:

コメントを投稿

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