用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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章