25 lines
780 B
Plaintext
25 lines
780 B
Plaintext
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
|