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で再帰をつかってもっと美しく読みやすく描いてみたい。