Guest User

Untitled

a guest
Jul 22nd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. (defun prime-p (n)
  2. (cond
  3. ((= n 1) nil)
  4. ((= n 2) t)
  5. ((evenp n) nil)
  6. (t (loop for i from 3 to (isqrt n) by 2
  7. never (zerop (mod n i))))))
  8.  
  9. (defun list->num (lst)
  10. (loop for i in lst
  11. for p = (- (length lst) 1) then (- p 1)
  12. sum (* i (expt 10 p))))
  13.  
  14. (defun num->list (n)
  15. (loop for c across (write-to-string n)
  16. collect (parse-integer (string c))))
  17.  
  18. (defun rotate (lst)
  19. (append (last lst) (butlast lst)))
  20.  
  21. (defun number-rotations (n)
  22. (let* ((digits (num->list n))
  23. (digits-count (length digits)))
  24. (loop repeat digits-count
  25. for rotated = digits then (rotate rotated)
  26. collect (list->num rotated))))
  27.  
  28. (defun problem-35 (limit)
  29. (let ((hash-primes (make-hash-table)))
  30. (loop for n from 1 to limit
  31. if (prime-p n)
  32. do (setf (gethash n hash-primes) t))
  33. (loop for p being the hash-keys in hash-primes
  34. if (loop for n in (number-rotations p)
  35. always (gethash n hash-primes))
  36. collect p)))
  37.  
  38. (defun num->list (n)
  39. (loop for c across (write-to-string n)
  40. collect (parse-integer (string c))))
  41.  
  42. (defun prime-p (n)
  43. (declare (fixnum n))
  44. (cond
  45. ((= n 1) nil)
  46. ((= n 2) t)
  47. ((evenp n) nil)
  48. (t (loop for i from 3 to (isqrt n) by 2
  49. never (zerop (mod n i))))))
  50.  
  51. (defun print-rotation (number)
  52. (let* ((str (format nil "~a" number))
  53. (strstr (concatenate 'string str str)))
  54. (loop for i below (length str) do
  55. (format t "~a~%" (parse-integer (subseq strstr i (+ i (length str))))))))
Add Comment
Please, Sign In to add comment