用clojure解决euler problem 7

问题描述:

By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.

What is the 10 001st prime number?

解决方案:

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

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

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

(defn nth-prime
  [nth-num]
  (loop
      [current-prime 2, cnt 1]
    (if (= cnt nth-num)
      current-prime
      (recur (next-prime current-prime) (inc cnt)))))

(nth-prime 6)
(nth-prime 10001)
第10001个质数是 104743


你可能感兴趣的:(clojure)