fork download
  1. f 1 = 1
  2. f 3 = 3
  3. f n | n `elem` c2 = let x = extract2 n
  4. in f x
  5. | n `elem` c41 = let x = extract41 n
  6. in 2*f(2*x+1) - (f x)
  7. | n `elem` c43 = let x = extract43 n
  8. in 3*f(2*x+1) - 2*(f x)
  9. | otherwise = -1
  10. where
  11. c2 = map (*2) [1..]
  12. c41 = map ((+1) . (*4)) [1..]
  13. c43 = map ((+3) . (*4)) [1..]
  14.  
  15. extract2 = (`div` 2)
  16. extract41 = (`div` 4) . subtract 1
  17. extract43 = (`div` 4) . subtract 3
  18.  
  19. euler463 n = sum . take n . map f $ [1..]
  20.  
  21. main = do
  22. -- writeln 8
  23. writeln 100
  24. -- writeln (3^37)
  25. where
  26. writeln = putStrLn . show . f
Runtime error #stdin #stdout #stderr 3.96s 553984KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
prog: out of memory (requested 1048576 bytes)