SSブログ

素因数分解 [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 素因数分解.jpg


 与えられた引数を素因数分解して、配列に詰めて返す関数を定義してみました。

 Rubyでは、配列を戻り値として返せるので、こういうことも簡単にできるのが面白いですね。

(by 心如)


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

wpm2.cpp体積が最大になるのは… ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。