aboutsummaryrefslogtreecommitdiff
path: root/lisp/003-largest_prime_factor.lisp
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-04-07 17:20:43 +0200
committerCharles <sircharlesaze@gmail.com>2020-04-07 17:20:43 +0200
commit9af65c8ac721024d0e45a2a6bde5c3f9fe638516 (patch)
treee9af93ce9e4d0263b2e76d2fd29ada90d313f334 /lisp/003-largest_prime_factor.lisp
parent31b43cf6d0d58812d30c0e2356f6458d06b1e52e (diff)
downloadproject_euler-9af65c8ac721024d0e45a2a6bde5c3f9fe638516.tar.gz
project_euler-9af65c8ac721024d0e45a2a6bde5c3f9fe638516.tar.bz2
project_euler-9af65c8ac721024d0e45a2a6bde5c3f9fe638516.zip
problem 1 2 4 in common lisp
Diffstat (limited to 'lisp/003-largest_prime_factor.lisp')
-rw-r--r--lisp/003-largest_prime_factor.lisp31
1 files changed, 31 insertions, 0 deletions
diff --git a/lisp/003-largest_prime_factor.lisp b/lisp/003-largest_prime_factor.lisp
new file mode 100644
index 0000000..e2fbe7a
--- /dev/null
+++ b/lisp/003-largest_prime_factor.lisp
@@ -0,0 +1,31 @@
+;;;; ;;;;;;;;
+;;;; Largest prime factor
+;;;; Problem 3
+;;;;
+;;;; The prime factors of 13195 are 5, 7, 13 and 29.
+;;;; What is the largest prime factor of the number 600851475143 ?
+;;;; ;;;;;;;;
+
+(defconstant +big-num+ 600851475143)
+
+(defun is-prime-rec (n d)
+(cond
+ ((= 0 (mod n d)) nil)
+ ((= 0 (mod n (+ d 2))) nil)
+ ((> (* d d) n) t)
+ (t (is-prime-rec n (+ d 6)))))
+
+(defun is-prime (n)
+ (when (or (= 0 (mod n 2)) (= 0 (mod n 3))) (return-from is-prime nil))
+ (is-prime-rec n 5))
+
+
+; (print (is-prime 1597))
+
+(defvar *largest* 0)
+
+(dotimes (x +big-num+)
+ (print x)
+ (when (and (= 0 (mod +big-num+ is-prime x) (setf *largest* x)))
+
+(print *largest*)