# Clojure Euler: Problem 020

Find the sum of the digits in the number 100!

Permalink: http://projecteuler.net/problem=20

First of all we need to calculate factorial. Without integer overflows, stack overflows and other caveats.

Previous article Fast Factorial has working solution that we might use.

``````(defn ! [n]
(reduce *' (range 1 (inc n))))
``````

Now, calculate the sum of digits, the same function that we used in Clojure Euler: Problem 008 and Clojure Euler: Problem 016

``````(defn sum-of-digits [n]
(reduce + (map #(- (int %) 48) (seq (str n)))))
``````

And the final line

``````(sum-of-digits (! 100))
``````

Simple enough, huh?

Code

P.S. The functions `sum-of-digits`, `count-digits` and similar used often and look very ugly, so I decided to create a separate set of functions (library?) which I can refer. It should be a set of common mathematic functions, including different sequences, sums, converters, interesting numbers. You might use it too. Welcome to numberto!

21 July 2013
blog comments powered by Disqus