Haskell-ピタゴラス数を計算する

ピタゴラス数とは

ピタゴラス数とは、三平方の定理を成り立たせる自然数の組のことです。

この3つの数の長さの辺を持つ三角形は直角三角形になります。


ピタゴラス数を計算する

ソースコード

Haskellであれば、内包表記でリストを生成するだけでピタゴラス数を計算することが可能です。


#!/usr/bin/env runghc

pythagorean a = [(x, y, z) | x <- [1..a],
                             y <- [1..a],
                             z <- [1..a],
                             x < y,
                             x * x + y * y == z * z]

-- 引数に最大値を指定します。
main = print(pythagorean 100)

実行例

スクリプトとして実行します。(スクリプトの実行権限を設定する必要があります。)


$ ./pythagorean.hs 
[(3,4,5),(5,12,13),(6,8,10),(7,24,25),(8,15,17),
(9,12,15),(9,40,41),(10,24,26),(11,60,61),(12,16,20),
(12,35,37),(13,84,85),(14,48,50),(15,20,25),(15,36,39),
(16,30,34),(16,63,65),(18,24,30),(18,80,82),(20,21,29),
(20,48,52),(21,28,35),(21,72,75),(24,32,40),(24,45,51),
(24,70,74),(25,60,65),(27,36,45),(28,45,53),(28,96,100),
(30,40,50),(30,72,78),(32,60,68),(33,44,55),(33,56,65),
(35,84,91),(36,48,60),(36,77,85),(39,52,65),(39,80,89),
(40,42,58),(40,75,85),(42,56,70),(45,60,75),(48,55,73),
(48,64,80),(51,68,85),(54,72,90),(57,76,95),(60,63,87),
(60,80,100),(65,72,97)]

関連ページ