Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defun prime-p (n)
- (cond
- ((= n 1) nil)
- ((= n 2) t)
- ((evenp n) nil)
- (t (loop for i from 3 to (isqrt n) by 2
- never (zerop (mod n i))))))
- (defun list->num (lst)
- (loop for i in lst
- for p = (- (length lst) 1) then (- p 1)
- sum (* i (expt 10 p))))
- (defun num->list (n)
- (loop for c across (write-to-string n)
- collect (parse-integer (string c))))
- (defun rotate (lst)
- (append (last lst) (butlast lst)))
- (defun number-rotations (n)
- (let* ((digits (num->list n))
- (digits-count (length digits)))
- (loop repeat digits-count
- for rotated = digits then (rotate rotated)
- collect (list->num rotated))))
- (defun problem-35 (limit)
- (let ((hash-primes (make-hash-table)))
- (loop for n from 1 to limit
- if (prime-p n)
- do (setf (gethash n hash-primes) t))
- (loop for p being the hash-keys in hash-primes
- if (loop for n in (number-rotations p)
- always (gethash n hash-primes))
- collect p)))
- (defun num->list (n)
- (loop for c across (write-to-string n)
- collect (parse-integer (string c))))
- (defun prime-p (n)
- (declare (fixnum n))
- (cond
- ((= n 1) nil)
- ((= n 2) t)
- ((evenp n) nil)
- (t (loop for i from 3 to (isqrt n) by 2
- never (zerop (mod n i))))))
- (defun print-rotation (number)
- (let* ((str (format nil "~a" number))
- (strstr (concatenate 'string str str)))
- (loop for i below (length str) do
- (format t "~a~%" (parse-integer (subseq strstr i (+ i (length str))))))))
Add Comment
Please, Sign In to add comment