fork download
  1. sumDiv n = (+1) $
  2. sum $
  3. map (\x -> x + n `div` x) $
  4. filter (\x -> n `mod` x == 0) $
  5. takeWhile (\x -> x*x<n) [2..]
  6.  
  7. friends :: [(Int, Int)]
  8. friends = filter (\(x, s) -> x < s && sumDiv s == x) $ map (\x -> (x, sumDiv x)) [1..]
  9.  
  10. main = mapM print $ take 14 friends
Success #stdin #stdout 1.71s 3540KB
stdin
Standard input is empty
stdout
(220,284)
(1184,1210)
(2620,2924)
(5020,5564)
(6232,6368)
(10744,10856)
(12285,14595)
(17296,18416)
(63020,76084)
(66928,66992)
(67095,71145)
(69615,87633)
(79750,88730)
(100485,124155)