-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprob3Factor.lisp
More file actions
37 lines (35 loc) · 1.03 KB
/
Copy pathprob3Factor.lisp
File metadata and controls
37 lines (35 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
(defun is-factor (query-number number-to-factor)
(cond ((equal 0 (rem number-to-factor query-number)) t)
(t nil)))
(defun is-prime (tst-number)
(let ((ret-val 0))
(cond ((eq 2 tst-number)
(setf ret-val t))
(t
(loop
for cntr
from 2
to (1- tst-number)
do (cond ((when (is-factor cntr tst-number)
(setf ret-val nil)(return)))
(t (setf ret-val t))))))
ret-val))
(defun largest-prime-factor (number)
(let
((operand1 0)
(operand2 0)
(op2 0))
(loop
for counter
from (isqrt number)
downto 1
do
(cond ((is-factor counter number)
(when (is-prime counter)
(setf operand1 counter)
(setf op2 (floor number counter))
(when (is-prime op2)
(setf operand2 op2))
(return)))
(t ())))
(max operand1 operand2)))