素因数分解 [Ruby]
# 素因数分解
def factorize(n)
ans = Array.new
tbl = [0, 1, 2, 2, 4]
d = 2
i = 1
while n / d >= d
if n % d == 0
n = n / d
ans << d
else
d = d + tbl[i]
if i == 4
i -= 1
else
i += 1
end
end
end
ans << n
end
# 掛け合せ
def multi(arr)
v = 1
arr.each_with_index do |n,index|
v *= n
print " x " if index > 0
print n
end
puts " = " + v.to_s
end
# メイン・ルーチン
loop do
print ">"
n = (gets.chomp).to_i
break unless n >= 1
ans = factorize(n)
p ans
multi(ans)
end
─────
与えられた引数を素因数分解して、配列に詰めて返す関数を定義してみました。
Rubyでは、配列を戻り値として返せるので、こういうことも簡単にできるのが面白いですね。
(by 心如)
コメント 0