Pell numbers: Difference between revisions
Content added Content deleted
m (→{{header|Quackery}}: typo) |
(→{{header Haskell}}: Added a Haskell draft) |
||
Line 385: | Line 385: | ||
(1235216565974040, 1235216565974041, 1746860020068409) |
(1235216565974040, 1235216565974041, 1746860020068409) |
||
</pre> |
</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}}== |
=={{header|J}}== |