用clojure解决euler problem 10

问题描述:

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.


解决方案:

(ns euler-problem-10.core
  (:use [clojure.contrib.math]))

(defn prime?
  [num]
 (every? #(or (> (rem num %) 0) (= num %)) (apply list (range 2 (inc (ceil (sqrt num)))))))

;(prime? 9)

(defn next-prime
  [num]
  (loop [x (inc num)]
    (if (prime? x)
      x
      (recur (inc x)))))

(defn sum-primes-below
  [num]
  (apply + (filter #(prime? %) (range 2 num))))

(sum-primes-below 2000000)

答案:142913828922

你可能感兴趣的:(clojure)