main :: [sys_message] main = [Stdout (table 10 7 (map (show . lagarias) [-99..100])), Stdout (lay (map ten_pow_m_div_7 [1..20]))] ten_pow_m_div_7 :: num->[char] ten_pow_m_div_7 m = "D(10^" ++ rjustify 2 (show m) ++ ") / 7 = " ++ show (lagarias (10^m) div 7) table :: num->num->[[char]]->[char] table w cw ls = lay [concat (map (rjustify cw) l) | l <- group w ls] group :: num->[*]->[[*]] group n [] = [] group n ls = take n ls : group n (drop n ls) lagarias :: num->num lagarias n = -lagarias (-n), if n<0 = sum [n div f | f <- factors n], otherwise factors :: num->[num] factors n = f n 2 where f n d = [], if d > n = d : f (n div d) d, if n mod d = 0 = f n (d+1), otherwise