Ulam spiral
素数を塗りつぶす場合、p角数を塗りつぶす場合両方に対応。
# -*- coding: cp932 -*-
require 'prime'
# mはp角数か?
def p_number?(p, m)
i = 0
a = ((p - 2) * i - p + 4) * i / 2
while a < m
i += 1
a = ((p - 2) * i - p + 4) * i / 2
end
a == m
end
# (x, y)に埋まる数字を算出
def cell(n, x, y, start = 1)
y, x = y - n / 2, x - (n - 1) / 2
l = 2 * [x.abs, y.abs].max
if y >= x
d = l * 3 + x + y
else
d = l - x - y
end
(l - 1) * (l - 1) + d + start - 1
end
# condition = 0 のとき素数を、それ以外のときcondition角数を塗りつぶす
def show_spiral(condition, n, symbol, start = 1)
puts "\nN : #{condition} : #{n}"
n.times{|y|
n.times{|x|
m = cell(n, x, y, start)
if condition == 0
print m.prime? ? symbol[0] : symbol[1]
else
print p_number?(condition, m) ? symbol[0] : symbol[1]
end
}
puts
}
end
show_spiral(0, 40, "■□")
show_spiral(3, 40, "■□")
show_spiral(4, 40, "■□")
show_spiral(5, 40, "■□")
show_spiral(6, 40, "■□")
N : 0 : 40
□□□■□□□□□□□□□□□□□■□□□■□□□□□□□■□□□■□□□□□□
□□□□□□■□□□□□■□□□■□■□□□■□□□□□□□□□□□□□■□□□
□■□□□□□■□■□□□□□■□□□■□■□□□□□□□□□□□□□□□□□■
■□□□□□■□■□□□□□□□□□□□□□□□□□□□□□■□□□□□■□□□
□□□□□□□■□■□□□□□■□□□■□□□□□□□□□□□■□□□□□■□□
□□□□□□□□□□□□□□□□□□■□□□■□■□□□■□□□□□□□□□□□
□■□□□□□□□□□□□□□□□■□□□■□□□□□□□■□□□■□■□□□□
■□□□□□■□□□■□□□□□□□□□□□■□■□□□□□■□□□□□□□□□
□■□□□■□■□□□□□■□■□□□□□■□□□□□■□□□□□□□□□□□■
■□■□□□□□□□□□□□■□□□□□□□□□□□■□□□■□□□□□■□■□
□□□■□□□□□■□□□■□□□□□□□■□□□□□■□□□□□□□□□□□□
□□□□■□□□■□□□□□□□□□■□□□■□■□□□■□■□■□□□□□□□
□■□■□□□□□□□■□□□□□■□□□□□□□□□■□■□□□■□□□□□■
□□□□□□■□□□□□■□□□■□■□□□□□□□□□□□□□□□■□□□□□
□□□□□□□□□□□□□□□□□□□■□■□□□□□■□□□■□□□■□■□□
■□□□■□□□■□□□■□■□□□■□□□□□□□■□□□■□■□□□□□□□
□□□□□□□□□□□□□□□□□□□■□■□□□■□□□□□□□□□□□□□□
□□■□□□□□□□■□□□■□■□□□□□■□■□■□□□□□■□■□■□□□
□□□■□■□■□■□■□■□■□■□□□■□□□□□□□■□□□□□□□□□■
□□□□□□□□□□□□□□□□□□■□■□■□□□□□□□□□□□■□□□□□
□□□□□□□□□□□□□■□□□■□□■■□■□■□■□□□■□■□■□□□□
□□□□□□■□□□□□□□■□■□■□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□■□□□■□□□□□□□□□□□□□□□□□□□□
□□□□■□□□■□■□□□■□■□□□■□□□■□■□□□■□□□■□■□□□
□■□□□□□■□□□■□□□■□□□□□■□□□□□■□■□□□■□□□□□□
□□□□□□□□□□□□□□□□■□□□□□□□□□□□■□□□□□□□□□□□
□■□□□□□□□□□■□■□□□□□■□□□■□□□■□□□□□□□■□■□□
■□■□□□□□■□□□■□□□□□□□□□□□■□□□□□□□■□□□□□■□
□□□■□□□□□■□□□□□■□□□■□■□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□■□■□□□■□□□□□■□□□■□□□□□■□□□
□□□■□■□■□■□□□□□□□□□■□■□□□□□■□□□□□■□■□□□■
□□□□□□■□□□■□□□□□□□□□□□■□■□□□□□□□□□□□□□□□
□■□□□■□■□□□□□■□□□□□■□□□■□■□□□□□□□□□□□■□□
□□■□■□□□□□□□■□□□□□□□□□■□□□□□□□■□□□□□■□□□
□□□□□□□□□□□□□■□■□□□■□■□□□□□□□□□■□□□□□■□□
□□□□□□□□□□■□□□■□□□□□■□□□□□■□□□□□□□□□■□■□
□□□□□□□■□■□□□□□■□□□□□□□□□□□□□□□□□■□□□□□□
■□□□■□□□□□□□■□□□□□□□□□□□■□□□■□□□□□■□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□■□□□■
■□□□■□■□□□■□□□□□■□□□□□□□□□□□■□□□□□□□□□□□
N : 3 : 40
□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□■□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□■□□□□
□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□■□□□□□□□□□■□□□□□□□□□□
□□□■□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□
□□□□□□□□□■□□□□□□□□□□□□□□■□□□□□□□□□■□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□■□■□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□■□□□■□□□□■□□□□□□□□□□□
□□□□□□□□□□□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□
□□□□□□□□■□□□□□□□□□■■□□■□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□■
□□■□□□□□□□□□□■□□□■□□□□□□□□□■□□□□□■□□□□□□
□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□■□□■□□□□□□□□□□□□□
□□□□□□□■□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□■□□□□□□□
□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□■□
□■□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
N : 4 : 40
■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□
N : 5 : 40
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□
□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□■□□□□□■□□□□□□□□□□
□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□■□□■□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□■□□□□□□■□□□□□□□□□□□□□
□□□□□□□■□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□■□□□□■□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□
□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□
□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□
□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□
N : 6 : 40
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□■□□□□□□□□□■□□□□□□□□□□
□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□■□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□■□□□□□□□□□■■□□■□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□■□□□□□□□□□□□□□■□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□■□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□
□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□■□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。