Minstrel

Ruby, JavaScript, Haskell, Math, Music, Design

Ruby: 約数を求めるプログラム

# 約数を求めるプログラム書いた by Ruby "数学ガール"という書籍を読んでいたら、 自然数nの約数の総和を表す一般式を書け、という問題が出てきたので 数学のニガテな私はRubyちゃんでやってみた。

def factor(num)
  raise "Invalid Input. Num must be over 1" if num < 1
  result = []
  i = 2
  while i <= num do
    if num % i == 0
      result << i
      num = num / i
    else
      i += 1
    end
  end
  return result
end

def sum(num_ary)
  num_ary.reduce(:+)
end


p factor 10
# => [2, 5]
p factor 100
# => [2, 2, 5, 5]
p factor 1000
# => [2, 2, 2, 5, 5, 5]
p factor 48
# => [2, 2, 2, 2, 3]
p factor 570
# => [2, 3, 5, 19]

ネストが深いのと、変数を多用していてプロセスを追いづらいのが微妙ではある。 次回はHaskell再帰をつかってもっと美しく読みやすく描いてみたい。