直角三角形の斜辺を c その他の辺を a, b とすると a^2 + b^2 = c^2 だが、そういう整数(ピタゴラス数)を集めてみた。
1辺の長さが10以下の直角三角形のピタゴラス数はつぎのようになる。 Prelude> [(a,b,c) | a <- [1..10], b <- [1..10], c <- [1..10], a^2 + b^2 == c^2] [(3,4,5),(4,3,5),(6,8,10),(8,6,10)] これでは、(3,4,5) と (4,3,5) のように順番が異なるが同じものを拾ってしまうので、a < b < c となるものだけを集めてみる。 Prelude> [(a,b,c) | c <- [1..10], b <- [1..c], a <- [1..b], a^2 + b^2 == c^2] [(3,4,5),(6,8,10)] (3,4,5) と (6,8,10) ではすべての辺が2倍になっているだけだから、(6,8,10) のようなものを除外して既約分数になるものだけを拾う。 Prelude> [(a,b,c) | c <- [1..10], b <- [1..c], a <- [1..b], a^2 + b^2 == c^2, foldr1 gcd [a,b,c] == 1] [(3,4,5)] 上手くいったようなので数の範囲を100まで広げてみる。 Prelude> [(a,b,c) | c <- [1..100], b <- [1..c], a <- [1..b], a^2 + b^2 == c^2, foldr1 gcd [a,b,c] == 1] [(3,4,5),(5,12,13),(8,15,17),(7,24,25),(20,21,29),(12,35,37),(9,40,41),(28,45,53),(11,60,61),(33,56,65),(16,63,65),(48,55,73),(36,77,85),(13,84,85),(39,80,89),(65,72,97)] (3,4,5) や (5,12,13) など見慣れたものもあるが他の数は知らなかった。蛇足だが検算してみた。 Prelude> 36^2 + 77^2 7225 Prelude> 85^2 7225 ここで計算したピタゴラス数の数列に規則性はないようだが、小さい数のひとつは奇数で、もうひとつは偶数だ。また、最大の数は必ず奇数になる。理由はクイズにする。 ピタゴラス数の計算はプログラムとも言えないものだろうが、こういうちょっとした物が、さしてデバックもせずに、リアルタイムに結果が得られるのがうれしい。
by tnomura9
| 2012-12-02 10:41
| Haskell
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||