Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

:Re: Employment puzzles and Lisp

17 views
Skip to first unread message

Robert L.

unread,
Nov 29, 2016, 1:07:55 AM11/29/16
to
Steven E. Harris wrote:

> > (defun is-prime (n)
> > (let ((root (truncate (sqrt n))))
> > (loop for i from 2 to root do
> > (when (= (mod n i) 0) (return-from is-prime nil))))
> > t)
> >
> > (I don't like the "return-from", any better idea?)
>
> (defun is-prime (n)
> (loop for i from 2 to (truncate (sqrt n))
> never (zerop (mod n i))))

MatzLisp (Ruby):

def is_prime n
2.upto(Math.sqrt(n).to_i).none?{|i| (n%i).zero?}
end

(2..29).each{|n| p [n, is_prime( n)]}
[2, true]
[3, true]
[4, false]
[5, true]
[6, false]
[7, true]
[8, false]
[9, false]
[10, false]
[11, true]
[12, false]
[13, true]
[14, false]
[15, false]
[16, false]
[17, true]
[18, false]
[19, true]
[20, false]
[21, false]
[22, false]
[23, true]
[24, false]
[25, false]
[26, false]
[27, false]
[28, false]
[29, true]


--
The former leader of the National Front Jean-Marie Le Pen was fined 30,000
euros for exposing the Jews' Holocaust gas chamber hoax.
infostormer.com/jean-marie-le-pen-fined-30000-euros-for-exposing-jewish-holocaust-gas-chamber-hoax

Joshua Lugo Mclellan

unread,
Nov 29, 2016, 10:13:24 AM11/29/16
to
admittedly it's a little bit longer than yours but its doesn't have a return in it :D
>(defun is-prime (x)
"SICP has done some interesting things to my coding style"
(labels ((is-prime-itter (x-val current-check ceiling-value)
(cond ((> current-check ceiling-value)
t)
((zerop (mod x-val current-check))
nil)
(t (is-prime-itter x-val (1+ current-check) ceiling-value)))))
(if (and (evenp x)
(not (= 2 x)))
nil
(is-prime-itter x 3 (sqrt x)))))

>(loop for i from 1 to 29
do (format t "~&[~a, ~a]" i (is-prime i)))
[1, t]
[2, t]
[3, t]
[4, nil]
[5, t]
[6, nil]
[7, t]
[8, nil]
[9, nil]
[10, nil]
[11, t]
[12, nil]
[13, t]
[14, nil]
[15, nil]
[16, nil]
[17, t]
[18, nil]
[19, t]
[20, nil]
[21, nil]
[22, nil]
[23, t]
[24, nil]
[25, nil]
[26, nil]
[27, nil]
[28, nil]
[29, t]
nil
0 new messages