Ruby

最大公約数とか、階乗とか、フィボナッチ数を書きました。
特に素数が自分でもお気に入りです。添え字を使ってないし、アルゴリズムどおりにプログラムできました。(添削歓迎)

# 最大公約数(ユークリッドの互除法)
def gcd(x, y)
    if x == y
        x
    elsif x > y
        gcd(y, x-y)
    else
        gcd(y, x)
    end
end

# てすと
puts gcd(100, 24) # 4
puts gcd(7, 93)   # 1
puts gcd(99, 99)  # 99

# 階乗を求める
def factorial(n)
    if n <= 1
        1
    else
        n * factorial(n - 1)
    end
end

puts factorial(0)  # 1
puts factorial(10) # 3628800

# 素数(エラトステネスの篩)
def prime(n)
    # 篩の中に2からnまでの数を入れる。0,1は除く。
    sieve = Array.new(n) {|i| i } - [0, 1]
    # 結果の入れ物を用意する
    result = []
    # 篩が空になるまで繰り返す。
    while not sieve.empty?
        # 篩の先頭の値を取り出す。
        p = sieve.at(0)
        # その数を結果に入れる。
        result += [p]
        # 篩の中のその倍数(割り切れる数)をすべて削除する。
        sieve.delete_if{|x| x % p == 0}
    end
    # 結果を返す
    result
end

# 100までの素数。
p prime(100)

# フィボナッチ数
def fib(n)
    if (n==0)
        0
    elsif (n ==1)
        1
    else
        fib(n-1) + fib(n-2)
    end
end

p fib(10) # 55