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