Skip to main content
Code Review

Return to Question

Commonmark migration
Source Link

I'd like to have the code below reviewed on all aspects.

Task: Largest prime factor

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

My solution

shared.clj

(ns shared)
(defn prime-seq []
 ((fn prime-seq-gen [s]
 (cons (first s)
 (lazy-seq (prime-seq-gen (filter #(not= 0 (mod % (first s))) (rest s))))))
 (iterate inc 2)))
(defn first-prime-factor [n]
 {:pre [(>= n 2)]}
 (first (filter #(= 0 (mod n %)) (prime-seq))))
(defn prime-factors [n]
 {:pre [(>= n 2)]}
 (loop [n n s []]
 (if (= n 1)
 s
 (recur (/ n (first-prime-factor n))
 (conj s (first-prime-factor n))))))

problems/problem3.clj

(ns problems.problem3
 (:require shared))
(defn largest-prime-factor [n]
 (apply max (shared/prime-factors n)))
(println (largest-prime-factor 600851475143))

I'd like to have the code below reviewed on all aspects.

Task: Largest prime factor

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

My solution

shared.clj

(ns shared)
(defn prime-seq []
 ((fn prime-seq-gen [s]
 (cons (first s)
 (lazy-seq (prime-seq-gen (filter #(not= 0 (mod % (first s))) (rest s))))))
 (iterate inc 2)))
(defn first-prime-factor [n]
 {:pre [(>= n 2)]}
 (first (filter #(= 0 (mod n %)) (prime-seq))))
(defn prime-factors [n]
 {:pre [(>= n 2)]}
 (loop [n n s []]
 (if (= n 1)
 s
 (recur (/ n (first-prime-factor n))
 (conj s (first-prime-factor n))))))

problems/problem3.clj

(ns problems.problem3
 (:require shared))
(defn largest-prime-factor [n]
 (apply max (shared/prime-factors n)))
(println (largest-prime-factor 600851475143))

I'd like to have the code below reviewed on all aspects.

Task: Largest prime factor

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

My solution

shared.clj

(ns shared)
(defn prime-seq []
 ((fn prime-seq-gen [s]
 (cons (first s)
 (lazy-seq (prime-seq-gen (filter #(not= 0 (mod % (first s))) (rest s))))))
 (iterate inc 2)))
(defn first-prime-factor [n]
 {:pre [(>= n 2)]}
 (first (filter #(= 0 (mod n %)) (prime-seq))))
(defn prime-factors [n]
 {:pre [(>= n 2)]}
 (loop [n n s []]
 (if (= n 1)
 s
 (recur (/ n (first-prime-factor n))
 (conj s (first-prime-factor n))))))

problems/problem3.clj

(ns problems.problem3
 (:require shared))
(defn largest-prime-factor [n]
 (apply max (shared/prime-factors n)))
(println (largest-prime-factor 600851475143))
Tweeted twitter.com/StackCodeReview/status/780712360247980033
Source Link
skiwi
  • 10.7k
  • 6
  • 44
  • 108

Project Euler #3

I'd like to have the code below reviewed on all aspects.

Task: Largest prime factor

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

My solution

shared.clj

(ns shared)
(defn prime-seq []
 ((fn prime-seq-gen [s]
 (cons (first s)
 (lazy-seq (prime-seq-gen (filter #(not= 0 (mod % (first s))) (rest s))))))
 (iterate inc 2)))
(defn first-prime-factor [n]
 {:pre [(>= n 2)]}
 (first (filter #(= 0 (mod n %)) (prime-seq))))
(defn prime-factors [n]
 {:pre [(>= n 2)]}
 (loop [n n s []]
 (if (= n 1)
 s
 (recur (/ n (first-prime-factor n))
 (conj s (first-prime-factor n))))))

problems/problem3.clj

(ns problems.problem3
 (:require shared))
(defn largest-prime-factor [n]
 (apply max (shared/prime-factors n)))
(println (largest-prime-factor 600851475143))
lang-clj

AltStyle によって変換されたページ (->オリジナル) /