Problem 63 asks “How many n-digit positive integers exist which are also an nth power?”
Once again, we harness the power of a for
loop to solve a problem in a very efficient and concise manner.
(use '[clojure.contrib.math :only (expt)])
(defn euler-63 []
(count
(for [n (range 1 10)
p (range 1 30)
</span> d [(count (str (expt n p)))]
:when (= d p)]
[n p])))
(time (euler-63)) ;; "Elapsed time: 25.113318 msecs"
The curious may find it interesting to spend a few minutes to discover why in the for loop above the loop variables n, p
have a upper bounds of 10 and less than 30, respectively.
Ciao.