2017年5月28日日曜日

170528

Ruby


一変数多項式の0乗

ずっと以下のコードの前者を使っていたが、
OEIS のSquare Array が元になっている数列を求めるときは、
後者を使う方が便利なときがある。

# m次以下を取り出す
def mul(f_ary, b_ary, m)
  s1, s2 = f_ary.size, b_ary.size
  ary = Array.new(s1 + s2 - 1, 0)
  (0..s1 - 1).each{|i|
    (0..s2 - 1).each{|j|
      ary[i + j] += f_ary[i] * b_ary[j]
    }
  }
  ary[0..m]
end

# m次以下を取り出す
def power0(ary, n, m)
  return [1] if n == 0
  k = power0(ary, n >> 1, m)
  k = mul(k, k, m)
  return k if n & 1 == 0
  return mul(k, ary, m)
end

# m次以下を取り出す
def power1(ary, n, m)
  if n == 0
    a = Array.new(m + 1, 0)
    a[0] = 1
    return a
  end
  k = power1(ary, n >> 1, m)
  k = mul(k, k, m)
  return k if n & 1 == 0
  return mul(k, ary, m)
end

m = 20
n = 10
ary = [1, 1]
(0..n).each{|i| p power0(ary, i, m)}
p ""
(0..n).each{|i| p power1(ary, i, m)}
p ""
# power0のように使うことも可能
(0..n).each{|i| p power1(ary, i, i)}
p ""
ary = [1, 1, 1]
(0..n).each{|i| p power0(ary, i, m)}
p ""
(0..n).each{|i| p power1(ary, i, m)}
p ""
# power0のように使うことも可能
(0..n).each{|i| p power1(ary, i, i * 2)}

出力結果
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
""
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 4, 6, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 5, 10, 10, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 6, 15, 20, 15, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 7, 21, 35, 35, 21, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 8, 28, 56, 70, 56, 28, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
""
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
""
[1]
[1, 1, 1]
[1, 2, 3, 2, 1]
[1, 3, 6, 7, 6, 3, 1]
[1, 4, 10, 16, 19, 16, 10, 4, 1]
[1, 5, 15, 30, 45, 51, 45, 30, 15, 5, 1]
[1, 6, 21, 50, 90, 126, 141, 126, 90, 50, 21, 6, 1]
[1, 7, 28, 77, 161, 266, 357, 393, 357, 266, 161, 77, 28, 7, 1]
[1, 8, 36, 112, 266, 504, 784, 1016, 1107, 1016, 784, 504, 266, 112, 36, 8, 1]
[1, 9, 45, 156, 414, 882, 1554, 2304, 2907, 3139, 2907, 2304, 1554, 882, 414, 156, 45, 9, 1]
[1, 10, 55, 210, 615, 1452, 2850, 4740, 6765, 8350, 8953, 8350, 6765, 4740, 2850, 1452, 615, 210, 55, 10, 1]
""
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 3, 6, 7, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 4, 10, 16, 19, 16, 10, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 5, 15, 30, 45, 51, 45, 30, 15, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 6, 21, 50, 90, 126, 141, 126, 90, 50, 21, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 7, 28, 77, 161, 266, 357, 393, 357, 266, 161, 77, 28, 7, 1, 0, 0, 0, 0, 0, 0]
[1, 8, 36, 112, 266, 504, 784, 1016, 1107, 1016, 784, 504, 266, 112, 36, 8, 1, 0, 0, 0, 0]
[1, 9, 45, 156, 414, 882, 1554, 2304, 2907, 3139, 2907, 2304, 1554, 882, 414, 156, 45, 9, 1, 0, 0]
[1, 10, 55, 210, 615, 1452, 2850, 4740, 6765, 8350, 8953, 8350, 6765, 4740, 2850, 1452, 615, 210, 55, 10, 1]
""
[1]
[1, 1, 1]
[1, 2, 3, 2, 1]
[1, 3, 6, 7, 6, 3, 1]
[1, 4, 10, 16, 19, 16, 10, 4, 1]
[1, 5, 15, 30, 45, 51, 45, 30, 15, 5, 1]
[1, 6, 21, 50, 90, 126, 141, 126, 90, 50, 21, 6, 1]
[1, 7, 28, 77, 161, 266, 357, 393, 357, 266, 161, 77, 28, 7, 1]
[1, 8, 36, 112, 266, 504, 784, 1016, 1107, 1016, 784, 504, 266, 112, 36, 8, 1]
[1, 9, 45, 156, 414, 882, 1554, 2304, 2907, 3139, 2907, 2304, 1554, 882, 414, 156, 45, 9, 1]
[1, 10, 55, 210, 615, 1452, 2850, 4740, 6765, 8350, 8953, 8350, 6765, 4740, 2850, 1452, 615, 210, 55, 10, 1]

2017年5月16日火曜日

170516

Ruby


The 14 primitive eta-products which are holomorphic modular forms of weight 1/2

Mersmann によって重み1/2 の正則なエータ商は14 個であることが証明されている。
q-展開し、OFFSET を0 にしたものがすべてOEIS に載っているので、計算してみた。

def s(k, n)
  s = 0
  (1..n).each{|i| s += i if n % i == 0 && i % k == 0}
  s
end

def A(ary, n)
  a_ary = [1]
  a = [0] + (1..n).map{|i| ary.inject(0){|s, j| s + j[1] * s(j[0], i)}}
  (1..n).each{|i| a_ary << (1..i).inject(0){|s, j| s - a[j] * a_ary[-j]} / i}
  a_ary
end

n = 200
# A000122
p A([[2, 5], [1, -2], [4, -2]], n)

# A002448
p A([[1, 2], [2, -1]], n)

# A010054
p A([[2, 2], [1, -1]], n)

# A010815
p A([[1, 1]], n)

# A080995
p A([[2, 1], [3, 2], [1, -1], [6, -1]], n)

# A089801
p A([[2, 2], [3, 1], [12, 1], [1, -1], [4, -1], [6, -1]], n)

# A089802
p A([[1, 1], [6, 2], [2, -1], [3, -1]], n)

# A089807
p A([[1, 1], [4, 1], [6, 2], [2, -1], [3, -1], [12, -1]], n)

# A089810
p A([[2, 2], [3, 1], [1, -1], [6, -1]], n)

# A089812
p A([[1, 2], [6, 1], [2, -1], [3, -1]], n)

# A106459
p A([[1, 1], [4, 1], [2, -1]], n)

# A121373
p A([[2, 3], [1, -1], [4, -1]], n)

# A133985
p A([[1, 1], [4, 1], [6, 5], [2, -2], [3, -2], [12, -2]], n)

# A133988
p A([[2, 5], [3, 1], [12, 1], [1, -2], [4, -2], [6, -2]], n)

出力結果
[1, 2, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0]
[1, -2, 0, 0, 2, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0]
[1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, -1, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, -1, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, -1, 0, 0, -1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0]
[1, 1, 0, 0, -1, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0]
[1, -2, 0, 1, 0, 0, 1, 0, 0, 0, -2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, -1, 0, -1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, -1, 1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 2, 0, -1, 0, 0, 1, 0, 0, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

2017年5月14日日曜日

170514

Ruby


eta products の線形結合

E_6 をeta products の線形結合で表してみた。

def s(k, n)
  s = 0
  (1..n).each{|i| s += i if n % i == 0 && i % k == 0}
  s
end

def A0(n)
  ary = [1]
  a = [0] + (1..n).map{|i| 24 * s(1, i) - 12 * s(2, i)}
  (1..n).each{|i| ary << (1..i).inject(0){|s, j| s - a[j] * ary[-j]} / i}
  ary
end

def A1(n)
  ary = [1]
  a = [0] + (1..n).map{|i| 12 * s(2, i)}
  (1..n).each{|i| ary << (1..i).inject(0){|s, j| s - a[j] * ary[-j]} / i}
  ary
end

def A2(n)
  ary = [1]
  a = [0] + (1..n).map{|i| 12 * s(2, i) + 8 * s(4, i) - 8 * s(1, i)}
  (1..n).each{|i| ary << (1..i).inject(0){|s, j| s - a[j] * ary[-j]} / i}
  ary
end

def A3(n)
  ary = [1]
  a = [0] + (1..n).map{|i| 24 * s(4, i) - 12 * s(2, i)}
  (1..n).each{|i| ary << (1..i).inject(0){|s, j| s - a[j] * ary[-j]} / i}
  ary
end

n = 200
p ary0 = A0(n)
p ary1 = [0] + A1(n)
p ary2 = [0] * 2 + A2(n)
p ary3 = [0] * 3 + A3(n)
p (0..n).map{|i| ary0[i] - 480 * ary1[i] - 16896 * ary2[i] + 8192 * ary3[i]}

出力結果
[1, -24, 264, -1760, 7944, -25872, 64416, -133056, 253704, -472760, 825264, -1297056, 1938336, -2963664, 4437312, -6091584, 8118024, -11368368, 15653352, -19822176, 24832944, -32826112, 42517728, -51425088, 61903776, -78146664, 98021616, -115331264, 133522752, -164079696, 201364416, -229101312, 259776264, -314269824, 374842512, -420258432, 471023592, -554746896, 653690400, -724846144, 793078704, -927125232, 1082704128, -1175873952, 1279397088, -1482713808, 1699194816, -1834739328, 1980797856, -2259791448, 2578950264, -2771448768, 2949559536, -3345875856, 3803764800, -4028054976, 4264256832, -4833186688, 5414943600, -5719271712, 6059238336, -6756214608, 7558096128, -7972913344, 8312839944, -9284959200, 10374325632, -10801349856, 11279351952, -12564531456, 13871037312, -14433084864, 15042871272, -16585653744, 18306804912, -19068642080, 19670138400, -21654935808, 23917274304, -24615220608, 25376943024, -28009137752, 30586037328, -31513408608, 32579551488, -35508322080, 38810229216, -40037878848, 40859536608, -44672951664, 48932378352, -49926264960, 51130316736, -55883287552, 60547082112, -61923031104, 63385408416, -68696763696, 74577903048, -76393194528, 77602957944, -84080984592, 91461572928, -92741489856, 94198772976, -102562521600, 110403610416, -112206096288, 114458740800, -123091514832, 132910417728, -135359463232, 136447747392, -147394340016, 159500457600, -160956544896, 162940575600, -176121743248, 188740015200, -190918949760, 193511203776, -207502774008, 222973423728, -226147998912, 227429983488, -244215894432, 263101540416, -264312339456, 266010877704, -286962805888, 306415571616, -308637532896, 312172889472, -332945133312, 356433028512, -360323811456, 360223654032, -386088721392, 414603535104, -415108384416, 417392122752, -447681704448, 476316548928, -478377518784, 481341997032, -512942325984, 547290900816, -551426235360, 550868402352, -587521351824, 629263864416, -628022995776, 628196474400, -673500182256, 714637972224, -715961510400, 719692526784, -763113874512, 812342889600, -816313861440, 812060601264, -865462338048, 924314846664, -920507154912, 920361668688, -982725974784, 1039906730016, -1039128015552, 1040478667008, -1102867760040, 1171757692512, -1174521854176, 1167835079136, -1239722456016, 1321246238400, -1313545628736, 1307424001248, -1395533705856, 1474191694800, -1470135873888, 1472419748592, -1554105008016, 1647547321728, -1648658651200, 1632926218176, -1734153444192, 1844175455232, -1829372897088, 1821916743552, -1937378426368, 2043436190400, -2033547631104, 2028332946336, -2142281587248, 2267057828112, -2265622499712, 2244116900808, -2373665758992, 2521003646304, -2496637706688, 2478371203704]
[0, 1, 0, -12, 0, 54, 0, -88, 0, -99, 0, 540, 0, -418, 0, -648, 0, 594, 0, 836, 0, 1056, 0, -4104, 0, -209, 0, 4104, 0, -594, 0, 4256, 0, -6480, 0, -4752, 0, -298, 0, 5016, 0, 17226, 0, -12100, 0, -5346, 0, -1296, 0, -9063, 0, -7128, 0, 19494, 0, 29160, 0, -10032, 0, -7668, 0, -34738, 0, 8712, 0, -22572, 0, 21812, 0, 49248, 0, -46872, 0, 67562, 0, 2508, 0, -47520, 0, -76912, 0, -25191, 0, 67716, 0, 32076, 0, 7128, 0, 29754, 0, 36784, 0, -51072, 0, 45144, 0, -122398, 0, -53460, 0, 11286, 0, -27256, 0, 57024, 0, 122364, 0, 99902, 0, 3576, 0, -29646, 0, -221616, 0, 41382, 0, -52272, 0, 130549, 0, -206712, 0, -180036, 0, 336512, 0, 145200, 0, 100980, 0, -73568, 0, 221616, 0, -317142, 0, -148324, 0, 15552, 0, -225720, 0, -32076, 0, 108756, 0, 196614, 0, 74360, 0, -58806, 0, 229824, 0, 120878, 0, -233928, 0, 361152, 0, -111340, 0, -349920, 0, -491832, 0, -196569, 0, -82764, 0, 707454, 0, 18392, 0, 92016, 0, 493668, 0, -559450, 0, 416856, 0, -16092, 0, 320760, 0, -361152, 0, -724032, 0, 7106, 0, 270864, 0, -530442, 0, 56168, 0, -261744]
[0, 0, 1, 8, 32, 96, 244, 528, 1024, 1856, 3126, 5016, 7808, 11616, 16808, 23856, 32768, 44352, 59293, 77352, 100032, 128128, 161052, 201264, 249856, 305280, 371294, 450128, 537856, 640992, 762744, 894528, 1048576, 1228224, 1419858, 1642080, 1897376, 2167008, 2476100, 2830960, 3201024, 3619968, 4101152, 4594392, 5153664, 5792352, 6436344, 7167072, 7995392, 8828160, 9768751, 10826640, 11881408, 13068000, 14408200, 15731856, 17211392, 18880576, 20511150, 22341624, 24407808, 26394720, 28629152, 31143376, 33554432, 36271488, 39296688, 42190728, 45435456, 49075584, 52541808, 56383632, 60716032, 64781376, 69343958, 74486648, 79235200, 84594048, 90595736, 96160416, 102432768, 109413056, 115856202, 123092904, 131236864, 138701376, 147008444, 156397296, 164917248, 174500928, 185349918, 195021024, 205963008, 218298880, 229345008, 241882608, 255852544, 268358208, 282492057, 298415928, 312600032, 328440288, 346445352, 362274000, 380205056, 400629504, 418195494, 438293592, 461062400, 480816864, 503448552, 528747568, 550764544, 575761920, 604168400, 628757280, 656356800, 687971680, 714924300, 745782048, 781049856, 810545472, 844596302, 883410000, 916132864, 953985216, 996596744, 1032438528, 1073741824, 1120934848, 1160665044, 1205605896, 1257494016, 1300573824, 1350125108, 1407494112, 1453934592, 1508188800, 1570467936, 1621531032, 1681337856, 1748755200, 1804229352, 1868683344, 1942913024, 2003683968, 2073071594, 2153998536, 2219006656, 2294986848, 2383575244, 2453207856, 2535526400, 2630865600, 2706962016, 2796703104, 2899063552, 2980902240, 3077056400, 3188747952, 3277848576, 3380678400, 3501192601, 3595741512, 3707398464, 3838806144, 3939040644, 4059139920, 4199579648, 4308095616, 4438476108, 4587983752, 4704270208, 4842599520, 5004720600, 5131035888, 5277351936, 5451294912, 5584059450, 5742671976, 5931197376, 6070775136, 6240709552, 6440033776, 6590816256, 6774038400, 6985513088, 7145957808, 7339040256, 7567918336, 7740288600, 7943613312, 8187281408, 8368286784, 8587340258, 8850062496, 9039745824, 9272181600, 9549256236, 9752485776, 10003201024, 10294712128, 10510100502]
[0, 0, 0, 1, 0, 12, 0, 66, 0, 232, 0, 627, 0, 1452, 0, 2982, 0, 5544, 0, 9669, 0, 16016, 0, 25158, 0, 38160, 0, 56266, 0, 80124, 0, 111816, 0, 153528, 0, 205260, 0, 270876, 0, 353870, 0, 452496, 0, 574299, 0, 724044, 0, 895884, 0, 1103520, 0, 1353330, 0, 1633500, 0, 1966482, 0, 2360072, 0, 2792703, 0, 3299340, 0, 3892922, 0, 4533936, 0, 5273841, 0, 6134448, 0, 7047954, 0, 8097672, 0, 9310831, 0, 10574256, 0, 12020052, 0, 13676632, 0, 15386613, 0, 17337672, 0, 19549662, 0, 21812616, 0, 24377628, 0, 27287360, 0, 30235326, 0, 33544776, 0, 37301991, 0, 41055036, 0, 45284250, 0, 50078688, 0, 54786699, 0, 60102108, 0, 66093446, 0, 71970240, 0, 78594660, 0, 85996460, 0, 93222756, 0, 101318184, 0, 110426250, 0, 119248152, 0, 129054816, 0, 140116856, 0, 150700737, 0, 162571728, 0, 175936764, 0, 188523600, 0, 202691379, 0, 218594400, 0, 233585418, 0, 250460496, 0, 269249817, 0, 286873356, 0, 306650982, 0, 328858200, 0, 349587888, 0, 372612780, 0, 398593494, 0, 422584800, 0, 449467689, 0, 479850768, 0, 507392490, 0, 538511952, 0, 573497969, 0, 605324940, 0, 641379486, 0, 681411864, 0, 717833997, 0, 758846892, 0, 805004222, 0, 846754800, 0, 893244726, 0, 945989792, 0, 992951664, 0, 1046035848, 0, 1106257812, 0, 1159022700, 0, 1219060722, 0, 1286839016, 0, 1346684988]
[1, -504, -16632, -122976, -532728, -1575504, -4058208, -8471232, -17047800, -29883672, -51991632, -81170208, -129985632, -187132176, -279550656, -384422976, -545530104, -715608432, -986161176, -1247954400, -1665307728, -2066980608, -2678616864, -3243917376, -4159663200, -4923450504, -6175361808, -7261732800, -8954092224, -10337619600, -12685958208, -14429092608, -17456963832, -19805530752, -23615078256, -26481071232, -31587041304, -34949354832, -41182495200, -45660250944, -53291422800, -58391525808, -68210360064, -74092255776, -85796909856, -93416358672, -107049273408, -115589884032, -133109345376, -142375996728, -162473866632, -174608457408, -197798710032, -210770528976, -239637182400, -253738070208, -286539422400, -304500873600, -341141446800, -360321847200, -406335085632, -425676536208, -476160056064, -502284758976, -558622843128, -584975182176, -653582514816, -680463054432, -756398112624, -791515839744, -873875350656, -909331593408, -1010815205400, -1044828083376, -1153328709456, -1201321922976, -1319087800800, -1364308856064, -1506788281152, -1550836425600, -1705327105104, -1764601070904, -1926920351664, -1985276484576, -2184798502656, -2236991958432, -2445044440608, -2522379182400, -2745582285600, -2814365962800, -3082739836176, -3145317614208, -3428820666432, -3520698596352, -3814466173056, -3901105454400, -4259499175008, -4328019490032, -4698407892024, -4812825142944, -5204087182728, -5297090653008, -5762079094464, -5842741334976, -6329745853200, -6461381380608, -6955427456208, -7068860723232, -7675651569600, -7754664733200, -8373356316864, -8527642579008, -9169269988032, -9285873304176, -10048528828800, -10140485717376, -10926863917200, -11095628111568, -11890620957600, -12027946525056, -13003107163200, -13072543169112, -14047325694864, -14247532297152, -15251550886656, -15385782825504, -16575397046208, -16651338181632, -17875930980600, -18078510409344, -19304181011808, -19444062784608, -20934446004864, -20975617555200, -22455280796256, -22700176732800, -24205455212400, -24323909126832, -26120022711552, -26151977728800, -27990492292224, -28203931703808, -30007942582464, -30138011209152, -32346116456472, -32315398869600, -34479326751408, -34739743201632, -36941468057424, -37013646978000, -39643623458208, -39565373779008, -42212057580000, -42430570758576, -45022192250112, -45105343492608, -48262885247808, -48076052249232, -51177602044800, -51428009070144, -54570468938832, -54523763255808, -58231835339832, -57992062990176, -61719842779056, -61912089130752, -65514123991008, -65465560746432, -69915619065600, -69480867024072, -73820734628256, -73994960239200, -78315514355232, -78101801615376, -83238513019200, -82753356071232, -87858714309408, -87918530716800, -92874076772400, -92618062437600, -98741091116304, -97909179430608, -103795481268864, -103865074834752, -109725505243200, -109251683204832, -116183053679616, -115250169190464, -122178507421824, -122055204902400, -128736479995200, -128114230583808, -136303973723232, -134963732833776, -142824643171056, -142733944450944, -150491428541496, -149541477502032, -158823229717152, -157288118904000, -166535713297800]

2017年5月7日日曜日

170507

Ruby


Number of representations of 10^n as sum of k triangular numbers

k が6, 8 のときに規則性がある。

def s(k, n)
  s = 0
  (1..n).each{|i| s += i if n % i == 0 && i % k == 0}
  s
end

def A(k, n)
  ary = [1]
  a = [0] + (1..n).map{|i| 2 * s(2, i) - s(1, i)}
  (1..n).each{|i| ary << (1..i).inject(0){|s, j| s - k * a[j] * ary[-j]} / i}
  ary
end

m = 3
n = 10 ** m
(1..100).each{|i|
  a = A(i, n)
  p [i, (0..m).map{|j| a[10 ** j]}]
}

出力結果
[1, [1, 1, 0, 0]]
[2, [2, 2, 2, 2]]
[3, [3, 9, 30, 78]]
[4, [4, 32, 272, 2880]]
[5, [5, 90, 2600, 83880]]
[6, [6, 231, 20400, 2003001]]
[7, [7, 567, 147511, 46076450]]
[8, [8, 1332, 1030302, 1007141184]]
[9, [9, 2979, 6750900, 20612437776]]
[10, [10, 6341, 41591741, 397737367822]]
[11, [11, 12892, 242585717, 7258733595410]]
[12, [12, 25158, 1346684988, 125940317363157]]
[13, [13, 47346, 7145580338, 2086440134887550]]
[14, [14, 86282, 36383662861, 33132657211536701]]
[15, [15, 152778, 178404108813, 506119212593601678]]
[16, [16, 263584, 845008027992, 7459911528848051232]]
[17, [17, 444125, 3875970033454, 106366350249753658347]]
[18, [18, 732276, 17253879294006, 1470241717851559433265]]
[19, [19, 1183491, 74674844682795, 19737083066556180555180]]
[20, [20, 1877676, 314733772865202, 257743659543879717605382]]
[21, [21, 2928282, 1293659282055567, 3278919983646414241580145]]
[22, [22, 4494193, 5192410364798734, 40689036635374198080187200]]
[23, [23, 6795097, 20375281865527130, 493107574525089987331703278]]
[24, [24, 10131156, 78251281586187426, 5842412953614743357001098430]]
[25, [25, 14907935, 294415231452853070, 67741972518495737868468490110]]
[26, [26, 21667711, 1086181579309557575, 769363768363979087935689960491]]
[27, [27, 31128462, 3932591936984003709, 8565955270277141782841472118026]]
[28, [28, 44232034, 13983719082095273847, 93567288088577633432099207461496]]
[29, [29, 62203202, 48869975111328487816, 1003426663894029699966686656123132]]
[30, [30, 86621580, 167966746125385693221, 10571768629387274811665279839656675]]
[31, [31, 119508596, 568110213674533249213, 109490724124333944968633230250789316]]
[32, [32, 163432032, 1891988536729339032080, 1115383211760636782200793944815208692]]
[33, [33, 221630937, 6207453228350773887246, 11182047224644846290030035287748405496]]
[34, [34, 298164054, 20074065058884924294308, 110379330479443501083252040822091785132]]
[35, [35, 398085261, 64016029204520969002903, 1073319265602861048417006103117247591817]]
[36, [36, 527649912, 201403126399797207319455, 10285804575120179718911699867862910259766]]
[37, [37, 694556378, 625387571704231391408568, 97184762379609449976524774000135058811643]]
[38, [38, 908227531, 1917384504114038712429564, 905692791658237702524015191542400232300361]]
[39, [39, 1180137387, 5806416282772424936449833, 8328166969507939881527435674941240159366309]]
[40, [40, 1524188628, 17373991390513793373870792, 75588911774854943077103327159615202817028772]]
[41, [41, 1957147259, 51384139718062181645309168, 677412775876584392000497062810168481449715214]]
[42, [42, 2499141225, 150257061374739621991442040, 5996176890580778188141465137865434497002107219]]
[43, [43, 3174230416, 434558731461306656908319553, 52438904357215231031836671672679724885535645326]]
[44, [44, 4011056126, 1243354685616868083201616586, 453228234079329840298439460451077062095062425595]]
[45, [45, 5043578706, 3520415084517199345693237686, 3872439774194071291996868210809075098235371690996]]
[46, [46, 6311912862, 9866403039568399741129898298, 32716850282609223308302899364491285989634727446074]]
[47, [47, 7863270798, 27377811890098209253302990248, 273392774614676131191373096265691357737735250293030]]
[48, [48, 9753024192, 75234583553344059445295491860, 2260144347128520486967951684848179161216273821383334]]
[49, [49, 12045896821, 204792831768752932701195373062, 18489251254356858357656266307573641347825603283845857]]
[50, [50, 14817300520, 552313660584536111039091447827, 149703755958721844885004574115749734947557715569923275]]
[51, [51, 18154828071, 1476121338171422203406396385042, 1199965027569773574285474618847562111902378409413216239]]
[52, [52, 22159917572, 3910311168087104865707576620953, 9523917058122963247757191413928647798073666990866027565]]
[53, [53, 26949703834, 10269229046962650709324610472632, 74861559955105313394526460151288121412061943720080400585]]
[54, [54, 32659073397, 26741306953324513170973186679934, 582881468798447636141086229312530682942482686654280356123]]
[55, [55, 39442940845, 69059527431549373545582774323085, 4496333312116471695938682709590611284833198031249873762960]]
[56, [56, 47478765236, 176903230326576585020279081565070, 34369203758649563079215339334151725489171819762552655826555]]
[57, [57, 56969326647, 449563828456858107756391227471585, 260367191376079129172930958732104331105852756789322707399849]]
[58, [58, 68145784067, 1133600517649856146314420556168814, 1955146663996772955891509922824076231481504121394631479180968]]
[59, [59, 81271037154, 2836670924990303463682556984227197, 14555151412787470360435265417879386739593496900453072700239598]]
[60, [60, 96643415706, 7045356181837789546441335728620089, 107439525165909360329875870430990868820225948844037761574343956]]
[61, [61, 114600722082, 17370192446168069511184604391161256, 786474844458523986016638719951294543607178075749351774966162642]]
[62, [62, 135524653248, 42518161576201876245939760542993800, 5710055345975768956250358236796905237385631408326373491126507667]]
[63, [63, 159845630616, 103340600818653272598830031775774074, 41123477900736691449399374958920369390688767967849562762473876441]]
[64, [64, 188048067392, 249431165661412219474572136066897888, 293826384763519601255581141064012323205810133214142300147506796096]]
[65, [65, 220676104753, 597954907105160383047774668717763157, 2083045510111285315679441348576237084499343480755650816347393352446]]
[66, [66, 258339849834, 1423892346685780912063844602192014990, 14654384309170877898248097288688784990844510840153975462389983548120]]
[67, [67, 301722150225, 3368435580800175876977628166747381080, 102317384245768352281829452133694546489778068414176597888715675233672]]
[68, [68, 351585941456, 7917197742543990620104710017908320632, 709079477775636804785498424780123199317159265905437976314981750709861]]
[69, [69, 408782205786, 18490777477145605916232765302112842505, 4878127297815823739800542338919390105543601803053894787691417482165243]]
[70, [70, 474258582511, 42916680537800752287796082155968232669, 33317446949710952723514353547487955408398447989475830679889715107980059]]
[71, [71, 549068671967, 98998771169535594723882699195022964884, 225941984169921604525554918076851548688038011721442023869111577960928101]]
[72, [72, 634382077428, 226991896128039177052165518506440283304, 1521506258221441317745293648234617374041052446419454692692053290995595085]]
[73, [73, 731495231187, 517381201077910681736323071372205585572, 10175266820023070939897341529646024803077255692152224202870159036843871282]]
[74, [74, 841843053261, 1172390644366726875615775142774533107096, 67585820720007784847105363244947977089514618680757806240396624569096431479]]
[75, [75, 967011493380, 2641410829260121376663522826559131557541, 445907113171214114050457879006541480708635207512557190029378693170139367812]]
[76, [76, 1108751009206, 5917535383978282180602521992759372500931, 2922485838041651605245603596097947797733585343026418021409855549086747757504]]
[77, [77, 1268991036082, 13183338164091513672724841559059504721011, 19029121938192456659537332657312480784110581423180538480794083153946453159127]]
[78, [78, 1449855506034, 29209682281875384750830175982779105251022, 123106641779305872473880489941540146739475162629762820230499882304217613749145]]
[79, [79, 1653679476242, 64369701011602311980184573991995931271583, 791366596158525779598259320528108715110756151647674476538703507720960429133632]]
[80, [80, 1883026929760, 141099256576030704070452579260251052953372, 5055260988823061458474374300611370693663630638444610465164781012551495291996692]]
[81, [81, 2140709813901, 307674127883196148990297083958963475723277, 32093295374737135379856775155629297736381359124937683801005299910055345018708492]]
[82, [82, 2429808384412, 667442436044890490755738899308422593832971, 202499639625533040043862312173653863502153494843277443626218398801576505772271776]]
[83, [83, 2753692926347, 1440542108546769293032907917209159797387780, 1270009308541837399820586566473246614653147556197517100387053596983260830182227339]]
[84, [84, 3116046925404, 3093565453666685348533118531541298666108788, 7917625250597296899031215590507160284432996842056474526453884838170737562119747880]]
[85, [85, 3520891766426, 6610662572605959975203415436335628488892744, 49070475025400814354904156581496972387248239045050335343795888482124480410515471627]]
[86, [86, 3972613038777, 14057670597620701902012153644347705743370378, 302352801691344072512388152290387488916594816234072869711633464348193720474773774336]]
[87, [87, 4475988531393, 29750485606338854236282345993688415858263124, 1852279619772792075507504263009675700112006825174951062985331023892196550980510263097]]
[88, [88, 5036218003476, 62663695949551090834211467484425603953035016, 11283078479422067402282657089499559840483019079593902614140874845188756969957600529212]]
[89, [89, 5658954820047, 131373403511292714930456445495802120121437802, 68344912179794902439888559139444973662652493791348138073450195733710488707812312430450]]
[90, [90, 6350339544903, 274154881862118437062782426011794489047911556, 411690307375257924204783670075589754185356145383095915851179270197774795538585222655541]]
[91, [91, 7117035586934, 569519446547134931322063413270657432919655503, 2466315773095977065933386196484387620145600233152830434294712624674945427596363105142788]]
[92, [92, 7966266999250, 1177799903932894142499310753444085592327078661, 14694925954812773672812620381862645244980264410155969448081421406973530550211327324073958]]
[93, [93, 8905858534146, 2424993623998760682929042158388991640300487364, 87086995867135984830404267310685378355125983823696931051380172817468674483310994141551174]]
[94, [94, 9944278060596, 4971082727338014844510371575618155267946087589, 513372177987547476500845005972405820503712422853250255014942546681847202940966607922719730]]
[95, [95, 11090681454716, 10146524327162079495407983845731760637584712353, 3010438971112358945295073809723436351792056486474582248791503467116232443482852751748835848]]
[96, [96, 12354960077472, 20622134365328614945750886527321115137296110016, 17561865001317034355991431401049730760715063400251028202349540844598805800490204733118543152]]
[97, [97, 13747790957833, 41737216659047810127266395921039168566582703253, 101924609165750298948632610396123288952244250541341277739523961126769083841603631974407612562]]
[98, [98, 15280689803582, 84122073857452440484902427497347733040436549884, 588543933502356215777828991621313302904006531193599219974069043224412135179947953835613566588]]
[99, [99, 16966066966101, 168855666620026104198829795805684560415730663729, 3381375802514361493989633146565427878933287283293392633511053125712310039435758471772631927276]]
[100, [100, 18817286489640, 337569020292608703618931591810026288085927961928, 19330609417148743978329847749614366418319592600892466793661057390223423277408685814610773864036]]

2017年4月30日日曜日

170430

Ruby


Glaisher's chi_4(n)(5)

一般に
1/4 * Sum_{a^2 + b^2 = n} (a + bi)^(4 * k)
の場合を計算してみた。

def G(a, n)
  ary = []
  (1..n).each{|j|
    s = 0
    (1..Math.sqrt(j).to_i).each{|k|
      m = Math.sqrt(j - k * k).to_i
      if m * m == j - k * k
        x = (k + m * 1i) ** a
        s += x
      end
    }
    ary << s.real
  }
  ary
end

n = 50
0.step(48, 4){|i| p [i, G(i, n)]}

出力結果
[0, [1, 1, 0, 1, 2, 0, 0, 1, 1, 2, 0, 0, 2, 0, 0, 1, 2, 1, 0, 2, 0, 0, 0, 0, 3, 2, 0, 0, 2, 0, 0, 1, 0, 2, 0, 1, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 1, 3]]
[4, [1, -4, 0, 16, -14, 0, 0, -64, 81, 56, 0, 0, -238, 0, 0, 256, 322, -324, 0, -224, 0, 0, 0, 0, -429, 952, 0, 0, 82, 0, 0, -1024, 0, -1288, 0, 1296, 2162, 0, 0, 896, -3038, 0, 0, 0, -1134, 0, 0, 0, 2401, 1716]]
[8, [1, 16, 0, 256, -1054, 0, 0, 4096, 6561, -16864, 0, 0, -478, 0, 0, 65536, -63358, 104976, 0, -269824, 0, 0, 0, 0, 720291, -7648, 0, 0, -1407838, 0, 0, 1048576, 0, -1013728, 0, 1679616, 925922, 0, 0, -4317184, 3577922, 0, 0, 0, -6915294, 0, 0, 0, 5764801, 11524656]]
[12, [1, -64, 0, 4096, 23506, 0, 0, -262144, 531441, -1504384, 0, 0, 6911282, 0, 0, 16777216, -47295038, -34012224, 0, 96280576, 0, 0, 0, 0, 308391411, -442322048, 0, 0, -173439758, 0, 0, -1073741824, 0, 3026882432, 0, 2176782336, -2050092718, 0, 0, -6161956864, -2285065118, 0, 0, 0, 12492052146, 0, 0, 0, 13841287201, -19737050304]]
[16, [1, 256, 0, 65536, 329666, 0, 0, 16777216, 43046721, 84394496, 0, 0, -1631232958, 0, 0, 4294967296, -9937278718, 11019960576, 0, 21604990976, 0, 0, 0, 0, -43908219069, -417595637248, 0, 0, 981515008322, 0, 0, 1099511627776, 0, -2543943351808, 0, 2821109907456, -6167627357758, 0, 0, 5530877689856, -3168324620158, 0, 0, 0, 14191040325186, 0, 0, 0, 33232930569601, -11240504081664]]
[20, [1, -1024, 0, 1048576, -19306574, 0, 0, -1073741824, 3486784401, 19769931776, 0, 0, 190840318802, 0, 0, 1099511627776, 750325121602, -3570467226624, 0, -20244410138624, 0, 0, 0, 0, 277376367976851, -195420486453248, 0, 0, 203154876160402, 0, 0, -1125899906842624, 0, -768332924520448, 0, 3656158440062976, -9492206529013198, 0, 0, 20730275981950976, 16082418088944802, 0, 0, 0, -67317861059952174, 0, 0, 0, 79792266297612001, -284033400808295424]]
[24, [1, 4096, 0, 16777216, 64250786, 0, 0, 68719476736, 282429536481, 263171219456, 0, 0, 1169648638562, 0, 0, 281474976710656, 1071576144961922, 1156831381426176, 0, 1077949314891776, 0, 0, 0, 0, -55476481273772829, 4790880823549952, 0, 0, -677548216755839518, 0, 0, 1152921504606846976, 0, 4389175889764032512, 0, 4738381338321616896, -8963023859283443038, 0, 0, 4415280393796714496, -39905458007232018238, 0, 0, 0, 18146319708519924066, 0, 0, 0, 191581231380566414401, -227231667297373507584]]
[28, [1, -16384, 0, 268435456, 11167097746, 0, 0, -4398046511104, 22876792454961, -182961729470464, 0, 0, -5728966721281678, 0, 0, 72057594037927936, 282379614196418242, -374813367582081024, 0, 2997644975644082176, 0, 0, 0, 0, 87451169084099139891, 93863390761479012352, 0, 0, -199246537739584127438, 0, 0, -1180591620717411303424, 0, -4626507598994116476928, 0, 6140942214464815497216, -1588134303148899671278, 0, 0, -49113415280952642371584, 75787711604536118762722, 0, 0, 0, 255467377459504789617906, 0, 0, 0, 459986536544739960976801, -1432799954273880307974144]]
[32, [1, 65536, 0, 4294967296, -196496109694, 0, 0, 281474976710656, 1853020188851841, -12877569044905984, 0, 0, 1330087744899070082, 0, 0, 18446744073709551616, 1427124567881986562, 121439531096594251776, 0, -843944364926958567424, 0, 0, 0, 0, 15327656759489517883011, 87168630449705456893952, 0, 0, 462878764200641031680642, 0, 0, 1208925819614629174706176, 0, 93528035680713871327232, 0, 7958661109946400884391936, 13364603395730595798238082, 0, 0, -55308737899853156674699264, -117479780930606773712920318, 0, 0, 0, -364111258293827945049846654, 0, 0, 0, 1104427674243920646305299201, 1004513313389905043981008896]]
[36, [1, -262144, 0, 68719476736, -4228490555534, 0, 0, -18014398509481984, 150094635296999121, 1108473428189904896, 0, 0, -152935864759452674158, 0, 0, 4722366482869645213696, -23125093646441048317118, -39346408075296537575424, 0, -290579658359414429057024, 0, 0, 0, 0, 3328217149873384131384531, 40091219331501961814474752, 0, 0, 178879349123443365836288722, 0, 0, -1237940039285380274899124224, 0, 6062104548852642170042580992, 0, 10314424798490535546171949056, 31870691915293393072612781042, 0, 0, 76173713960970336090724499456, 142745614735837791048783844642, 0, 0, 0, -634673747789680938240399685614, 0, 0, 0, 2651730845859653471779023381601, -872472156536408409737666494464]]
[40, [1, 1048576, 0, 1099511627776, 182008936336226, 0, 0, 1152921504606846976, 12157665459056928801, 190850202427694514176, 0, 0, -1589900269312604162398, 0, 0, 1208925819614629174706176, -7565475025188088957756798, 12748236216396078174437376, 0, 200120941860822202896613376, 0, 0, 0, 0, 24032305888515086764969532451, -1667131264794733222190645248, 0, 0, -312717248594471233529540479198, 0, 0, 1267650600228229401496703205376, 0, -7932975540011625566968792219648, 0, 13367494538843734067838845976576, 43857017456118466671167150613602, 0, 0, 209842016732653502224519267352576, -101691394325222881712409889310398, 0, 0, 0, 2212803758534626401134640679045026, 0, 0, 0, 6366805760909027985741435139224001, 25199699179355595619664692459339776]]
[44, [1, -4194304, 0, 17592186044416, 94681488501586, 0, 0, -73786976294838206464, 984770902183611232881, -397122945948156166144, 0, 0, 4746397497491127617277362, 0, 0, 309485009821345068724781056, -504652011666161847903676478, -4130428534112329328517709824, 0, 1665654360682135200282443776, 0, 0, 0, 0, -5675377301815925525037469625229, -19907834009317026529656908546048, 0, 0, -152160779312124788381478442879118, 0, 0, -1298074214633706907132624082305024, 0, 2116663951139429303309781866381312, 0, 17324272922341479351919144385642496, 35088063909469944088702337296151762, 0, 0, -6986260747626522399085455059451904, -94426535081528617629501241894433438, 0, 0, 0, 93239574851794058485356430783849266, 0, 0, 0, 15286700631942576193765185769276826401, 23804257718515743693366758998976495616]]
[48, [1, 16777216, 0, 281474976710656, -115081126049163454, 0, 0, 4722366482869645213696, 79766443076872509863361, -1930740909250041887064064, 0, 0, -1084233462811051085429762878, 0, 0, 79228162514264337593543950336, 469378091822230262815821699842, 1338258845052394702439737982976, 0, -32392457274524350748321407565824, 0, 0, 0, 0, 9690951893942946361799831871319491, -18190419000008971247289584632987648, 0, 0, 208701784399551975874725687351552962, 0, 0, 1329227995784915872903807060280344576, 0, 7874857632169390720997808875736399872, 0, 22452257707354557240087211123792674816, -6334717520302422495126844926858828478, 0, 0, -543455252465466329764349892155863465984, 574223389697520075808965854102928347522, 0, 0, 0, -9179612090222986848475130127017894808894, 0, 0, 0, 36703368217294125441230211032033660188801, 162587193170289902788329928068811305517056]]

2017年4月25日火曜日

170425

Ruby


Glaisher's chi_4(n)(4)

丸善から出版されているG.H.Hardy の
"Ramanujan: Twelve Lectures on Subjects Suggested by His Life and Work"
の翻訳を読んでいて、以前とは別の方法で計算したくなったので書いてみた。

n = 50

ary = []
(1..n).each{|j|
  p j
  s = 0
  (1..Math.sqrt(j).to_i).each{|k|
    m = Math.sqrt(j - k * k).to_i
    if m * m == j - k * k
      x = (k + m * 1i) ** 4
      s += x
      p [k, m, x]
    end
  }
  ary << s.real
}
p ary

出力結果
1
[1, 0, (1+0i)]
2
[1, 1, (-4+0i)]
3
4
[2, 0, (16+0i)]
5
[1, 2, (-7-24i)]
[2, 1, (-7+24i)]
6
7
8
[2, 2, (-64+0i)]
9
[3, 0, (81+0i)]
10
[1, 3, (28-96i)]
[3, 1, (28+96i)]
11
12
13
[2, 3, (-119-120i)]
[3, 2, (-119+120i)]
14
15
16
[4, 0, (256+0i)]
17
[1, 4, (161-240i)]
[4, 1, (161+240i)]
18
[3, 3, (-324+0i)]
19
20
[2, 4, (-112-384i)]
[4, 2, (-112+384i)]
21
22
23
24
25
[3, 4, (-527-336i)]
[4, 3, (-527+336i)]
[5, 0, (625+0i)]
26
[1, 5, (476-480i)]
[5, 1, (476+480i)]
27
28
29
[2, 5, (41-840i)]
[5, 2, (41+840i)]
30
31
32
[4, 4, (-1024+0i)]
33
34
[3, 5, (-644-960i)]
[5, 3, (-644+960i)]
35
36
[6, 0, (1296+0i)]
37
[1, 6, (1081-840i)]
[6, 1, (1081+840i)]
38
39
40
[2, 6, (448-1536i)]
[6, 2, (448+1536i)]
41
[4, 5, (-1519-720i)]
[5, 4, (-1519+720i)]
42
43
44
45
[3, 6, (-567-1944i)]
[6, 3, (-567+1944i)]
46
47
48
49
[7, 0, (2401+0i)]
50
[1, 7, (2108-1344i)]
[5, 5, (-2500+0i)]
[7, 1, (2108+1344i)]
[1, -4, 0, 16, -14, 0, 0, -64, 81, 56, 0, 0, -238, 0, 0, 256, 322, -324, 0, -224, 0, 0, 0, 0, -429, 952, 0, 0, 82, 0, 0, -1024, 0, -1288, 0, 1296, 2162, 0, 0, 896, -3038, 0, 0, 0, -1134, 0, 0, 0, 2401, 1716]

2017年4月23日日曜日

170423(3)

Ruby


A093573 の素数の位置

奇数だけの行と偶数だけの行が交互に並ぶので、
2を除けば、素数が現れる行と素数が現れない行が交互に並ぶはずと考えて、
実験してみた。
予想以上に、素数が連続して並んでいた。

require 'prime'

n = 2 ** 12
@ary = [1]
s = 1
s_ary = [['□'], ['□']]
(1..n).each{|i|
  j = @ary[i / 2]
  j *= (-1) ** (i / 2) if i % 2 > 0
  @ary << j
  s += j
  str = '□'
  str = '■' if i.prime?
  if s_ary[s] == nil
    s_ary[s] = [str]
  else
    s_ary[s] << str
  end
}
(1..s_ary[1..-1].size - 1).each{|i| p s_ary[i].join}

出力結果
"□"
"□■"
"■□□"
"■■■□"
"□□□□□"
"□■■■□□"
"□□□□□□□"
"□■■■■□■□"
"□□□□□□□□□"
"□□□□□■□■□■"
"□□□□□□□□□□□"
"■□□■□■□■■■■□"
"□□□□□□□□□□□□□"
"■■■□□■■□■□■□□□"
"□□□□□□□□□□□□□□□"
"□□□□□□□■□□□■□□□□"
"□□□□□□□□□□□□□□□□□"
"□■□□□■□□□■■□□■■□□□"
"□□□□□□□□□□□□□□□□□□□"
"□□□□■■□□■□□■□■■■■□□■"
"□□□□□□□□□□□□□□□□□□□□□"
"■■□□□□■□■□□□□□■■□■■□□■"
"□□□□□□□□□□□□□□□□□□□□□□□"
"■■■□■□□■■□□□□■■□□□□□□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■□■□□□□□■■□□□□□□□■□■□■□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■■□■□□□□□□□□■□■■□■□□□■■□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□■■□□■■□□□□■□□■□□■□□□□□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■□■□□■□□□■□■■□■□□■□■□□□■□■■□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■■□□□□■■□□■■□□□□□■■□□□□□■□□■□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□□□□■□□□□■□□□□■□■□□■□□□□■□■□□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■■□□□□□□□□□■□□□□□■□□□□□□□□■□□□■■■■□□■■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■□□□□□□□■□■■■□□■□□□□□□□□□□□□□■□□■□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■□■■■■□■■□□□■□□■□□■■□□□□□□□□■■□□□□□□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■□□□□□■□□□■□□□□□■□■■■□■□□■□□□□■□□□■□■□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■■□■□□□□□□□■□■□□□■□□□□□□■□□□□□■□□□■■□□□■□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■□■□■□□□■■□■□□□■□■□□□□■■□□□□□■■■□□□□□□■□□□■□■■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■■□□□□□□□■□□■□■□□□□□□□■□□□□□□■□■□■■□□■□■□□□□■□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■■□■□□■□■□■□□□□□■■■□□□□□□□□□■■□□□□■□■■□■□□□□□□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■□□□□□□□■□■□□■□□■■■■□□■□□□■□□□■□□□□■□□□■□□■□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□□□□■□□□■□□□■□■■□□□□□□■□□■□□□■□■□■□□■□□□□■□■□□□□■■■□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□■□□□■■□□□□□□□□□□□□□□□□■■□□□□□□□■□□□□□□□□□□□□□□■□□□□□■□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□□□□□□□■□■□□□□■□□□□□□■□□□■□■□□□■■□□■□□■□□■□□■□□□■□□□■■□□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■■□■□□□■□□□□□□□□□■□■■■□□■□□□■□■□□□□□■■□□□■□□■■□□□■□□■□■■□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■■□□■□□■□□□□□□□■■□□□□□□□□□□□■□□■□□□□□□□■□□□□□■■□□□□□□□■□□□□□□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□■□□□□□□□□□□■□■□■□□■□■□□□■□□□□■□□□□■■■□□□□□□□□□□■■■□□□□□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□■□□□□□□■□□□□■□□□□■■■□□■■□■■□□□□□□■□□□□■■■□■□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□□□□■■■■□□□□□□□■□□■□□□□□□□□■□□□□□□□■□□□□■□■□□□□□□□□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□□□□□■■□■□■□□□□□□■□□■■□□□□□■■□□■■□■□□□□■□□□□□□■□□□■□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■■□■□□■□■□■□■□□□□□□■□□□■□□□■□□□□■□□□□■□□□■□■□□□□■■□■□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■□□□□□□□□□□□□□□□■□□■□□□□□□■□□□□□■□■□□□□□□□□□■■□□■■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□□■■■□□□■□□□□■□□□□□□□■■□□■■■□■□□□■□□■□□□■□□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■■□□□□□□■□■□□□□□□■□■□□□□□□□■□□□■■□■□■□■□□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■□■□□□■■□□□■□□□■□□□□□□□□■■□□■□□□□□□■□□■□□□□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□□□□□□■■■□□□□■□■□□■□□□□□□■□□■□■□□□□□□■■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□■□■■□□□□□□□□■□□□□□□■□□□■□□□□□□□□■□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■□□■■□□■□■□□□□□□□□□□□□□□□□□□□■□□□□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□□■□□□□□■□■■□□□□■□□□■□■■□□□□□■□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□■□■□□■□□■■□□□□■□□■□■□□□□□■□■□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■■□□□■□□□■□□□□□□□□□■□□■□□□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□■□■□□□□□□■■■□□■■□□□□□□□■□■□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■□□□■□□□□□□□□■□□□■□□□□■□□□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□■□□■□□■□□■□□■□□□□■□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■□□□■□□□□□□□□■□□■■■□■■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■□□■□■□□□□□□■□□□□□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□"
"■□■□■□□□□□□□■□□■□□□□■□"
"□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□□□□■□■□□□□□□□□"
"□□□□□□□□□□□□□□□□□□□"
"□□■□□□□□■■□□□■□■□□"
"□□□□□□□□□□□□□□□□□"
"□■□□■□□■□□□□□□□□"
"□□□□□□□□□□□□□□□"
"■□□□□□■□□□■■□□"
"□□□□□□□□□□□□□"
"■□□□□□□■■■■□"
"□□□□□□□□□□□"
"□■□■■□■□□□"
"□□□□□□□□□"
"□■□■■□■□"
"□□□□□□□"
"□□□□□□"
"□□□□□"
"□□□□"
"□□□"
"■■"

170423(2)

Ruby


(q^(-1/5) * R(q))^k

R(q) をRogers-Ramanujan continued fraction とし、
q^(-1/5) * R(q) のk乗を求めてみた。

def s(k, m, n)
  s = 0
  (1..n).each{|i| s += i if n % i == 0 && i % k == m}
  s
end

def A(k, n)
  ary = [1]
  a = [0] + (1..n).map{|i| s(5, 1, i) + s(5, 4, i) - s(5, 2, i) - s(5, 3, i)}
  (1..n).each{|i| ary << (1..i).inject(0){|s, j| s - k * a[j] * ary[-j]} / i}
  ary
end

n = 50
-12.upto(12){|i| p [i, A(i, n)]}

出力結果
[-12, [1, 12, 66, 208, 363, 144, -846, -1728, 273, 5940, 7152, -8544, -31328, -13896, 68286, 113248, -49716, -333708, -226980, 559776, 1088016, -205264, -2637306, -2072640, 3758552, 7937772, -573882, -17004528, -14235543, 21634056, 47763486, -563424, -94007685, -80925372, 110254230, 248894112, 5569776, -460233360, -400720638, 507688064, 1157634801, 49340880, -2040275052, -1781566800, 2146085694, 4908249776, 270470166, -8324985024, -7258290919, 8429111520, 19259764860]]
[-11, [1, 11, 55, 154, 220, -22, -682, -891, 946, 4015, 2310, -8700, -16753, 3982, 47729, 41536, -72864, -173580, -4411, 391622, 388960, -489566, -1300926, -169345, 2565915, 2682999, -2800094, -7881984, -1424555, 14187580, 15122822, -14100867, -40818041, -8405783, 68831499, 73713288, -63884645, -187221892, -41049074, 300402069, 321058441, -264775808, -778765691, -176168784, 1201506889, 1277513600, -1016869810, -2987754539, -686500551, 4464395892, 4715935928]]
[-10, [1, 10, 45, 110, 120, -98, -485, -340, 1045, 2320, -174, -6580, -6995, 9120, 26970, 5998, -56950, -69760, 59785, 209470, 67523, -380000, -487155, 337020, 1282540, 466352, -2104240, -2734190, 1663345, 6599200, 2510530, -10102740, -13118530, 7380420, 29800970, 11533800, -43312975, -55908670, 29856435, 121296270, 47153292, -169326330, -216794900, 111693820, 453639990, 176106794, -612918540, -777964670, 390448770, 1580419670, 610948982]]
[-9, [1, 9, 36, 75, 54, -117, -303, -27, 855, 1087, -1080, -4041, -1635, 8100, 12060, -6588, -33219, -17064, 55029, 86139, -35343, -205974, -111996, 305973, 482736, -167859, -1053612, -581959, 1450638, 2277414, -720987, -4671711, -2576943, 6093534, 9473373, -2824029, -18545583, -10165032, 23196852, 35678328, -10227222, -67350339, -36601215, 81483183, 124005132, -34570244, -227236941, -122408271, 267459084, 403024239, -110094912]]
[-8, [1, 8, 28, 48, 14, -104, -160, 112, 573, 336, -1112, -2000, 602, 5192, 3680, -7776, -14970, 2520, 32680, 23840, -43362, -83696, 10688, 166336, 120929, -202864, -387928, 41552, 721344, 518200, -831392, -1567936, 153208, 2780992, 1972020, -3067952, -5710154, 524656, 9756720, 6831888, -10404845, -19126232, 1693320, 31719984, 21959178, -32893728, -59802336, 5154736, 96738057, 66286688, -98010020]]
[-7, [1, 7, 21, 28, -7, -77, -63, 141, 315, -28, -791, -721, 1071, 2569, 119, -5145, -4788, 5922, 14329, 980, -25956, -23619, 27433, 65086, 5054, -109739, -97986, 108864, 254002, 20153, -408044, -357665, 387436, 889077, 71337, -1374246, -1186647, 1259531, 2850750, 227493, -4276111, -3643794, 3811186, 8521205, 676788, -12464011, -10503535, 10850504, 24008957, 1892218, -34387689]]
[-6, [1, 6, 15, 14, -15, -48, -8, 114, 132, -140, -432, -102, 808, 930, -771, -2446, -621, 4002, 4448, -3522, -10767, -2628, 16446, 17754, -13463, -40332, -9744, 58338, 61647, -45768, -134315, -31782, 187119, 194342, -141390, -408918, -95570, 552048, 565320, -405948, -1158321, -267150, 1525548, 1544100, -1095213, -3092344, -706296, 3987330, 3996003, -2807736, -7852974]]
[-5, [1, 5, 10, 5, -15, -24, 15, 70, 30, -125, -175, 95, 420, 180, -615, -826, 410, 1760, 705, -2415, -3100, 1530, 6270, 2460, -8090, -10174, 4840, 19570, 7500, -24360, -30024, 14130, 55970, 21155, -67380, -81926, 37895, 148410, 55305, -174500, -209577, 96025, 371620, 137160, -427665, -508800, 230670, 885070, 323605, -1001340, -1181123]]
[-4, [1, 4, 6, 0, -11, -8, 18, 32, -10, -72, -42, 96, 153, -40, -288, -160, 344, 524, -146, -944, -501, 1080, 1602, -416, -2727, -1436, 2970, 4336, -1131, -7176, -3694, 7616, 10942, -2776, -17562, -8960, 18136, 25784, -6528, -40608, -20472, 41176, 57974, -14464, -89538, -44808, 89202, 124608, -30961, -189736, -94188]]
[-3, [1, 3, 3, -2, -6, 0, 12, 9, -15, -28, 3, 48, 33, -48, -87, 7, 135, 90, -134, -234, 21, 356, 237, -330, -575, 42, 831, 540, -762, -1296, 107, 1848, 1191, -1633, -2769, 210, 3842, 2448, -3366, -5634, 444, 7722, 4889, -6624, -11028, 840, 14871, 9342, -12636, -20877, 1608]]
[-2, [1, 2, 1, -2, -2, 2, 5, 0, -8, -6, 7, 14, 1, -18, -15, 14, 30, 2, -40, -32, 32, 66, 6, -82, -65, 60, 125, 8, -157, -120, 117, 238, 19, -286, -222, 206, 419, 28, -507, -386, 366, 732, 55, -864, -659, 610, 1224, 86, -1442, -1090, 1016]]
[-1, [1, 1, 0, -1, 0, 1, 1, -1, -2, 0, 2, 2, -1, -3, -1, 3, 3, -2, -5, -1, 6, 5, -3, -8, -2, 8, 7, -5, -12, -2, 13, 12, -7, -18, -4, 18, 16, -11, -26, -5, 27, 24, -14, -37, -8, 37, 33, -21, -52, -10, 53]]
[0, [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
[1, [1, -1, 1, 0, -1, 1, -1, 1, 0, -1, 2, -3, 2, 0, -2, 4, -4, 3, -1, -3, 6, -7, 5, 0, -5, 9, -10, 7, -1, -7, 14, -16, 11, -1, -11, 20, -22, 16, -2, -15, 29, -33, 23, -2, -23, 41, -45, 32, -4, -30, 57]]
[2, [1, -2, 3, -2, -1, 4, -6, 6, -3, -2, 9, -16, 17, -10, -5, 24, -36, 36, -21, -10, 46, -74, 77, -42, -22, 94, -144, 142, -78, -38, 172, -266, 266, -146, -73, 312, -471, 464, -251, -122, 534, -814, 801, -432, -213, 910, -1364, 1328, -713, -344, 1485]]
[3, [1, -3, 6, -7, 3, 6, -17, 24, -21, 6, 21, -54, 77, -72, 24, 64, -159, 216, -190, 57, 159, -392, 534, -468, 144, 381, -924, 1220, -1044, 312, 833, -1992, 2625, -2244, 669, 1746, -4138, 5382, -4530, 1332, 3474, -8184, 10591, -8886, 2607, 6724, -15711, 20160, -16771, 4872, 12537]]
[4, [1, -4, 10, -16, 15, 0, -30, 64, -81, 60, 12, -128, 250, -312, 234, 32, -443, 848, -1014, 720, 109, -1312, 2448, -2880, 2033, 280, -3550, 6512, -7513, 5184, 744, -8832, 15980, -18252, 12492, 1712, -20745, 37168, -41942, 28352, 3918, -46288, 82146, -92000, 61785, 8384, -99174, 174720, -194134, 129288, 17546]]
[5, [1, -5, 15, -30, 40, -26, -30, 125, -220, 245, -124, -180, 615, -1010, 1085, -550, -705, 2415, -3850, 3980, -1926, -2460, 8090, -12550, 12715, -6074, -7500, 24360, -37150, 36930, -17251, -21155, 67380, -101210, 99295, -45924, -55305, 174500, -259140, 251275, -114750, -137160, 427665, -628760, 604095, -273626, -323605, 1001340, -1460180, 1391295, -624848]]
[6, [1, -6, 21, -50, 84, -90, 15, 180, -465, 700, -648, 72, 1097, -2580, 3648, -3242, 423, 4902, -11256, 15408, -13227, 1650, 18738, -41724, 55617, -46668, 5838, 63070, -137982, 180540, -148656, 18150, 194097, -417430, 537648, -436392, 52910, 553836, -1176561, 1496930, -1200285, 143478, 1488820, -3127542, 3937044, -3125154, 370716, 3801276, -7913772, 9873882, -7769451]]
[7, [1, -7, 28, -77, 154, -217, 161, 153, -791, 1589, -2044, 1393, 1029, -5194, 9766, -11886, 7854, 5005, -25599, 46718, -55055, 35343, 21175, -106484, 189049, -217056, 136318, 78498, -389761, 678720, -764477, 471541, 265097, -1296771, 2220792, -2461759, 1496320, 825643, -3991211, 6745704, -7381913, 4431749, 2411821, -11530029, 19265841, -20850886, 12386906, 6663874, -31560228, 52229899, -55998628]]
[8, [1, -8, 36, -112, 258, -440, 496, -112, -1049, 3008, -5024, 5360, -1686, -7608, 21376, -33856, 34543, -11472, -41404, 114544, -175940, 174296, -58176, -189648, 514298, -769664, 744088, -246336, -760302, 2026752, -2973920, 2821440, -924075, -2754880, 7231920, -10437504, 9746754, -3156520, -9190608, 23812704, -33904299, 31248712, -10015232, -28651536, 73391344, -103282720, 94125760, -29878640, -84321679, 213851288, -297958584]]
[9, [1, -9, 45, -156, 405, -801, 1149, -891, -855, 4790, -10377, 14643, -11859, -4617, 37629, -79635, 107685, -85473, -22238, 222066, -459927, 604212, -470070, -97497, 1091517, -2213721, 2838285, -2165007, -395307, 4681476, -9324735, 11726838, -8797455, -1482462, 18079857, -35454276, 43868498, -32431977, -5193486, 64142478, -124102764, 151475247, -110588673, -17095158, 212139153, -405679769, 489372516, -353362500, -53284155, 661073463, -1251327069]]
[10, [1, -10, 55, -210, 605, -1352, 2300, -2630, 570, 6160, -18522, 32990, -38590, 17410, 47685, -156802, 272890, -310500, 152005, 293580, -992876, 1689240, -1877000, 935940, 1528385, -5203696, 8670710, -9431000, 4695055, 6993230, -23725756, 38827080, -41481615, 20507870, 28831575, -97132194, 156500450, -164639160, 80660650, 109125120, -364517778, 579443490, -601542940, 291999320, 384334330, -1272738402, 1999485490, -2051852270, 987093095, 1272932000, -4179922966]]
[11, [1, -11, 66, -275, 869, -2156, 4191, -6006, 4620, 5181, -28567, 64481, -96602, 87120, 16467, -251394, 585981, -862455, 781869, 9570, -1694869, 3957690, -5706403, 5118102, -279202, -9495167, 22012485, -31127305, 27513706, -2334640, -46296943, 106191976, -147598473, 128617808, -12933437, -202295874, 458844166, -628202520, 540216358, -58910874, -808452601, 1813784654, -2450591627, 2082298097, -237047955, -2998544692, 6658914075, -8892531846, 7475107233, -870993739, -10436689692]]
[12, [1, -12, 78, -352, 1209, -3288, 7138, -12000, 13596, -2080, -36606, 111360, -206181, 256200, -139284, -285984, 1071087, -2009256, 2489364, -1528464, -1838544, 7740064, -14427624, 17621568, -11162727, -10219044, 46056996, -84876912, 102019968, -64998576, -50685750, 237269856, -431725065, 511081936, -324642030, -228454608, 1091778688, -1962068232, 2290731408, -1445700960, -949337475, 4583473284, -8141849946, 9387812304, -5879310774, -3676838200, 17824500348, -31325988576, 35717952769, -22191221580, -13392004356]]

170423

Ruby


5/2

Clifford A. Pickover のA Passion for Mathematics に
以下の無限積が載っていた。
Product_{i>=1} (prime(i)^2 + 1)/(prime(i)^2 - 1) = 5/2
そこで、
Product_{i=1..n} (prime(i)^2 + 1)/(prime(i)^2 - 1) = Product_{i=1..n} (1 + 2/(prime(i)^2 - 1))
を計算してみた。

require 'prime'

n = 30
s = 1
Prime.take(n).each_with_index{|e, i| p [i + 1, s *= 1 + 2r / (e * e - 1)]}

出力結果
[1, (5/3)]
[2, (25/12)]
[3, (325/144)]
[4, (8125/3456)]
[5, (99125/41472)]
[6, (8425625/3483648)]
[7, (1221715625/501645312)]
[8, (44226105625/18059231232)]
[9, (11719917990625/4767637045248)]
[10, (986817094810625/400481511800832)]
[11, (94931804520782125/38446225132879872)]
[12, (65028286096735755625/26297217990889832448)]
[13, (10937757721470954096125/4417932622469491851264)]
[14, (10117425892360632538915625/4082169743161810470567936)]
[15, (11179755611058498955501765625/4506715396450638759507001344)]
[16, (1208273587195168540959998515625/486725262816668986026756145152)]
[17, (14507615967633023653871430453125/5840703153800027832321073741824)]
[18, (5399734663153011403970946414653125/2172741573213610353623439431958528)]
[19, (713082606986971211877339688288015625/286801887664196566678294005018525696)]
[20, (359536250442830885028554670834817478125/144548151382755069605860178529336950784)]
[21, (25896327227841738070299951291210502140625/10407466899558365011621932854112260456448)]
[22, (1243422111970677915652402276613353495090625/499558411178801520557852776997388501909504)]
[23, (104477784774121595595671362022756165624078125/41962906539019327726859633267780634160398336)]
[24, (82767301098059128030890852994427434407394690625/33234621978903307559672829548082262255035482112)]
[25, (389420151666368197385341463338781078886792019390625/156335661788761158760700990194178961647686907854848)]
[26, (4673958102706221587912063069390875960944767272733125/1876027941465133905128411882330147539772242894258176)]
[27, (112196143596635771601237532050310393542135703085290625/45024670595163213723081885175923540954533829462196224)]
[28, (12119300416806411177680846622415603830730696229496015625/4862664424277627082092843598999742423089653581917192192)]
[29, (14400152755249377761320381956754220471674213259887165765625/5776845336041820973526298195611693998630508455317624324096)]
[30, (91944975342267277006030638793875697711639851664379553413515625/36879380625290985094991887680785054487257165978747713685028864)]

2017年4月2日日曜日

170402

Ruby


A109091 の計算

二通りで計算してみたが、後者の方がコードがシンプル。

# m次以下を取り出す
def mul(f_ary, b_ary, m)
  s1, s2 = f_ary.size, b_ary.size
  ary = Array.new(s1 + s2 - 1, 0)
  (0..s1 - 1).each{|i|
    (0..s2 - 1).each{|j|
      ary[i + j] += f_ary[i] * b_ary[j]
    }
  }
  ary[0..m]
end

def p0(n)
  (3 * n * n - n) / 2
end

def p1(n)
  (3 * n * n + n) / 2
end

def A010815(n)
  ary = Array.new(n + 1, 0)
  ary[0] = 1
  i = 1
  j = p0(i)
  while j <= n
    ary[j] = (-1) ** i
    i += 1
    j = p0(i)
  end
  i = 1
  j = p1(i)
  while j <= n
    ary[j] = (-1) ** i
    i += 1
    j = p1(i)
  end
  ary
end

# m次以下を取り出す
def power(ary, n, m)
  return [1] if n == 0
  k = power(ary, n >> 1, m)
  k = mul(k, k, m)
  return k if n & 1 == 0
  return mul(k, ary, m)
end

def f(ary, k, n)
  aryk = Array.new(n + 1, 0)
  (0..n / k).each{|i| aryk[k * i] = ary[i]}
  aryk
end

def A(k, n)
  ary = A010815(n)
  aryk = power(ary, k, n)
  ps = Array.new(n + 1, 0)
  ps[0] = 1
  (1..n).each{|num|
    (num..n).each{|i|
      ps[i] += ps[i - num]
    }
  }
  psk = f(ps, k, n)
  mul(aryk, psk, n)
end

def A109091_1(n)
  ary = A(5, n)
  (1..n).map{|i| - ary[i] / 5}
end

def s(k, m, n)
  s = 0
  (1..n).each{|i| s += i if n % i == 0 && i % k == m}
  s
end

def A109091_2(n)
  (1..n).map{|i| s(5, 1, i) + s(5, 4, i) - s(5, 2, i) - s(5, 3, i)}
end

n = 1000
p ary = A109091_1(n)
p ary == A109091_2(n)

出力結果
[1, -1, -2, 3, 1, 2, -6, -5, 7, -1, 12, -6, -12, 6, -2, 11, -16, -7, 20, 3, 12, -12, -22, 10, 1, 12, -20, -18, 30, 2, 32, -21, -24, 16, -6, 21, -36, -20, 24, -5, 42, -12, -42, 36, 7, 22, -46, -22, 43, -1, 32, -36, -52, 20, 12, 30, -40, -30, 60, -6, 62, -32, -42, 43, -12, 24, -66, -48, 44, 6, 72, -35, -72, 36, -2, 60, -72, -24, 80, 11, 61, -42, -82, 36, -16, 42, -60, -60, 90, -7, 72, -66, -64, 46, 20, 42, -96, -43, 84, 3, 102, -32, -102, 60, 12, 52, -106, -60, 110, -12, 72, -66, -112, 40, -22, 90, -84, -60, 96, 10, 133, -62, -84, 96, 1, 42, -126, -85, 84, 12, 132, -72, -120, 66, -20, 80, -136, -44, 140, -18, 92, -72, -144, 77, 30, 72, -86, -108, 150, 2, 152, -100, -112, 72, 32, 72, -156, -80, 104, -21, 132, -61, -162, 126, -24, 82, -166, -60, 157, 16, 140, -126, -172, 60, -6, 132, -120, -90, 180, 21, 182, -72, -124, 110, -36, 64, -192, -138, 120, -20, 192, -86, -192, 96, 24, 129, -196, -84, 200, -5, 132, -102, -180, 96, 42, 102, -154, -132, 240, -12, 212, -156, -144, 106, -42, 100, -192, -110, 144, 36, 192, -72, -222, 126, 7, 112, -226, -120, 230, 22, 144, -150, -232, 84, -46, 180, -160, -96, 240, -22, 242, -133, -182, 186, 43, 84, -240, -160, 164, -1, 252, -126, -264, 126, 32, 171, -256, -84, 216, -36, 210, -132, -262, 120, -52, 120, -180, -198, 270, 20, 272, -176, -144, 136, 12, 132, -276, -140, 224, 30, 282, -92, -282, 216, -40, 144, -252, -147, 273, -30, 192, -216, -292, 86, 60, 180, -240, -150, 264, -6, 252, -152, -204, 220, 62, 112, -306, -216, 204, -32, 312, -120, -312, 156, -42, 240, -316, -104, 360, 43, 212, -132, -320, 183, -12, 162, -220, -210, 276, 24, 332, -246, -252, 166, -66, 132, -336, -157, 224, -48, 384, -140, -300, 210, 44, 172, -346, -180, 350, 6, 240, -252, -352, 120, 72, 270, -192, -180, 360, -35, 381, -182, -266, 216, -72, 124, -366, -242, 294, 36, 312, -192, -372, 192, -2, 230, -360, -120, 380, 60, 252, -192, -382, 170, -72, 192, -294, -288, 390, -24, 352, -215, -264, 196, 80, 252, -396, -200, 240, 11, 402, -132, -384, 306, 61, 180, -432, -160, 410, -42, 272, -306, -360, 154, -82, 252, -280, -240, 420, 36, 422, -212, -322, 260, -16, 144, -372, -318, 288, 42, 432, -220, -432, 192, -60, 330, -440, -144, 440, -60, 301, -192, -442, 216, 90, 222, -300, -258, 450, -7, 504, -336, -304, 226, 72, 200, -456, -230, 320, -66, 462, -144, -462, 330, -64, 232, -466, -252, 396, 46, 312, -300, -504, 160, 20, 288, -364, -240, 480, 42, 432, -242, -264, 399, -96, 182, -486, -310, 324, -43, 492, -252, -480, 240, 84, 352, -432, -164, 500, 3, 332, -252, -502, 210, 102, 264, -314, -378, 510, -32, 432, -341, -400, 256, -102, 252, -552, -216, 344, 60, 522, -210, -522, 396, 12, 262, -512, -264, 507, 52, 420, -360, -504, 180, -106, 330, -360, -270, 516, -60, 542, -272, -364, 336, 110, 144, -546, -408, 434, -12, 600, -220, -480, 276, 72, 420, -556, -224, 504, -66, 384, -282, -562, 276, -112, 282, -366, -360, 570, 40, 572, -432, -384, 252, -22, 301, -576, -273, 384, 90, 492, -192, -624, 360, -84, 292, -586, -258, 640, -60, 392, -396, -592, 240, 96, 450, -400, -264, 600, 10, 602, -252, -462, 456, 133, 204, -606, -420, 360, -62, 552, -336, -612, 306, -84, 360, -616, -204, 620, 96, 440, -312, -540, 264, 1, 312, -480, -468, 576, 42, 632, -400, -424, 316, -126, 312, -516, -360, 504, -85, 642, -212, -642, 396, 84, 320, -646, -305, 720, 12, 384, -486, -652, 220, 132, 462, -504, -276, 660, -72, 662, -332, -384, 410, -120, 252, -660, -498, 444, 66, 744, -252, -672, 336, -20, 471, -676, -224, 576, 80, 452, -384, -682, 420, -136, 300, -460, -462, 624, -44, 692, -516, -504, 346, 140, 300, -672, -350, 464, -18, 702, -240, -720, 516, 92, 352, -612, -360, 710, -72, 560, -450, -704, 192, -144, 540, -480, -360, 720, 77, 612, -381, -484, 546, 30, 266, -726, -360, 547, 72, 672, -372, -732, 366, -86, 462, -792, -294, 740, -108, 480, -312, -742, 320, 150, 372, -574, -576, 636, 2, 752, -506, -504, 360, 152, 360, -756, -380, 528, -100, 762, -252, -660, 576, -112, 382, -720, -342, 770, 72, 512, -576, -772, 294, 32, 480, -432, -390, 840, 72, 864, -352, -600, 473, -156, 264, -786, -588, 524, -80, 672, -420, -744, 396, 104, 600, -796, -240, 736, -21, 630, -402, -864, 396, 132, 384, -540, -510, 810, -61, 812, -540, -544, 432, -162, 352, -840, -410, 504, 126, 822, -272, -822, 510, -24, 360, -826, -462, 830, 82, 552, -516, -688, 280, -166, 720, -640, -420, 840, -60, 871, -422, -564, 636, 157, 322, -798, -572, 564, 16, 792, -432, -852, 372, 140, 530, -856, -288, 860, -126, 504, -432, -862, 420, -172, 432, -546, -576, 960, 60, 792, -550, -672, 440, -6, 432, -876, -440, 584, 132, 882, -301, -882, 576, -120, 442, -886, -360, 756, -90, 732, -666, -920, 300, 180, 510, -528, -450, 960, 21, 832, -504, -504, 560, 182, 304, -906, -678, 714, -72, 912, -440, -984, 456, -124, 690, -792, -320, 920, 110, 612, -462, -864, 432, -36, 462, -714, -630, 930, 64, 860, -696, -624, 466, -192, 420, -936, -396, 624, -138, 942, -312, -924, 660, 120, 504, -946, -480, 864, -20, 632, -480, -952, 364, 192, 720, -720, -480, 816, -86, 993, -432, -742, 726, -192, 264, -966, -665, 640, 96, 972, -546, -840, 486, 24, 682, -976, -324, 1080, 129, 770, -492, -982, 420, -196, 480, -552, -720, 924, -84, 992, -672, -664, 432, 200, 492, -996, -500, 720, -5]
true