Haskell でユークリッドの互除法をプログラムしてみた。
まず関数の名前を euclid にした。euclid は引数 m と n をとる。 euclid :: Int -> Int -> Int euclid m n まず m が n より小さいときは m と n を交換する。 | m < n = euclid n m n が0のときは、mが求める最大公約数なのでそれを戻り値として戻す。 | n == 0 = m それ以外は、m のかわりに n をとり、n の代わりに m を n で割った余りをとる。 | otherwise euclid n (mod m n) これでプログラムはできあがり。完成したのが次のプログラム。 euclid :: Int -> Int -> Int euclid m n | m < n = euclid n m | n == 0 = m | otherwise = euclid n (mod m n) 実行例 Main> euclid 30 42 6 最大公約数を求める関数は gcd という名前で Prelude に標準でついている。 Main> gcd 30 42 6 ちなみに最小公倍数は lcm
by tnomura9
| 2011-06-06 20:32
| Haskell
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||