Pell numbers: Difference between revisions

→‎{{header Haskell}}: Added a Haskell draft
(→‎{{header Haskell}}: Added a Haskell draft)
Line 385:
(1235216565974040, 1235216565974041, 1746860020068409)
</pre>
 
=={{header|Haskell}}==
<syntaxhighlight lang="haskell">import Data.Numbers.Primes (isPrime)
 
----------------------- PELL SERIES ----------------------
 
pell :: Integer -> Integer -> [Integer]
pell a b = a : b : zipWith (+) (pell a b) ((2 *) <$> tail (pell a b))
 
a000129, a002203, a001333, a086383, a096650, a002315 :: [Integer]
a000129 = pell 0 1
 
a002203 = pell 2 2
 
a001333 = (`div` 2) <$> a002203
 
a086383 = filter isPrime a000129
 
a096650 = zip [0 ..] a000129 >>= (\(i, n) -> [i | isPrime n])
 
a002315 = 1 : 7 : zipWith (-) ((6 *) <$> tail a002315) a002315
 
------------------- PYTHAGOREAN TRIPLES ------------------
 
pythagoreanTriples :: [(Integer, Integer, Integer)]
pythagoreanTriples =
tail (concat (zipWith3 go [0 ..] a000129 (scanl (+) 0 a000129)))
where
go i p m
| odd i = [(m, succ m, p)]
| otherwise = []
 
-------------------------- TESTS -------------------------
main :: IO ()
main = do
mapM_
(\(k, xs) -> putStrLn ('\n' : k) >> print (take 10 xs))
[ ("a000129", a000129)
, ("a002203", a002203)
, ("a001333", a001333)
-- Waste of electrical power ?
-- ("a086383", a086383)
-- ("a096650", a096650
, ("a002315", a002315)
]
putStrLn "\nRational approximations to sqrt 2:"
mapM_ putStrLn $ take 10 $
tail $ zipWith
(\n d -> show n <> ('/':show d) <> " -> "
<> show (fromIntegral n / fromIntegral d))
a001333
a000129
putStrLn "\nPythagorean triples:"
print $ take 5 pythagoreanTriples</syntaxhighlight>
{{Out}}
<pre>a000129
[0,1,2,5,12,29,70,169,408,985]
 
a002203
[2,2,6,14,34,82,198,478,1154,2786]
 
a001333
[1,1,3,7,17,41,99,239,577,1393]
 
a002315
[1,7,41,239,1393,8119,47321,275807,1607521,9369319]
 
Rational approximations to sqrt 2:
1/1 -> 1.0
3/2 -> 1.5
7/5 -> 1.4
17/12 -> 1.4166666666666667
41/29 -> 1.4137931034482758
99/70 -> 1.4142857142857144
239/169 -> 1.4142011834319526
577/408 -> 1.4142156862745099
1393/985 -> 1.4142131979695431
3363/2378 -> 1.4142136248948696
 
Pythagorean triples:
[(3,4,5),(20,21,29),(119,120,169),(696,697,985),(4059,4060,5741)]</pre>
 
=={{header|J}}==
9,655

edits