6 seemed like the most interesting. I didn't feel like re-writing the BigInt project from my AP computer science class in high school to handle arbitrary length integers using a variable-length string as the backing store... so I decided to write it in a language that would give me arbitrary-width integers... so here's the haskell solution... the 3 hours seem to have expired:

Code:

factwork :: [Integer] -> Integer -> Integer
factwork [] acc = acc
factwork (x:xs) acc = factwork xs $! (x * acc)
factorial :: Integer -> Integer
factorial n = factwork [1..n] 1
sumdigits :: Integer -> Integer
sumdigits x = sumwork x 0
sumwork :: Integer -> Integer -> Integer
sumwork 0 n = n
sumwork x n = sumwork (x `div` 10) (n + x `mod` 10)
sumfact :: Integer -> Integer
sumfact x = sumdigits (factorial x)

It doesn't do the I/O portion, but passing a number to sumfact will get the factorial of the number, then sum its digits. I'm not very good with IO Monads and whatnot, but it's pretty easy to get something that prints each sum, etc. I would say the easiest thing to do would be to just get all of these values together (they aren't going to change), and use them as an array constant in whatever the target language was, and just use that. Calculating 3 digit factorials at runtime seems foolhardy.

-Lee