Advertisement
Guest User

Untitled

a guest
Apr 15th, 2022
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 2.92 KB | None | 0 0
  1. (defun expt-mod (x n z)
  2.   (let ((r (expt x 0)))
  3.     (dotimes (i (integer-length n) r)
  4.       (setf r (mod (expt r 2) z))
  5.       (if (eql (ldb (byte 1 (- (1- (integer-length n)) i)) n) 1)
  6.           (setf r (mod (* r x) z))))))
  7.  
  8. (defun expt-mod2 (x n z)
  9.   (let ((r (expt x 0)))
  10.     (dotimes (i (integer-length n) (mod r z))
  11.       (setf r (expt r 2))
  12.       (if (eql (ldb (byte 1 (- (1- (integer-length n)) i)) n) 1)
  13.           (setf r (mod (* r x) z))))))
  14.  
  15. (defun expt-mod3 (x n z)
  16.   (let ((r (expt x 0)))
  17.     (dotimes (i (integer-length n) r)
  18.       (setf r (mod (expt r 2) z))
  19.       (if (eql (ldb (byte 1 (- (1- (integer-length n)) i)) n) 1)
  20.           (setf r (* r x))))))
  21.  
  22. (defun expt-mod4 (x n z)
  23.   (let ((r (expt x 0)))
  24.     (dotimes (i (integer-length n) (mod r z))
  25.       (setf r (expt r 2))
  26.       (if (eql (ldb (byte 1 (- (1- (integer-length n)) i)) n) 1)
  27.           (setf r (* r x))))))
  28.  
  29. ;; CL-USER> (time (expt-mod #x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
  30. ;;                          #xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140
  31. ;;                          #xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F))
  32. ;;
  33. ;; Evaluation took:
  34. ;;   0.000 seconds of real time
  35. ;;   0.000770 seconds of total run time (0.000672 user, 0.000098 system)
  36. ;;   100.00% CPU
  37. ;;   835,852 processor cycles
  38. ;;   147,200 bytes consed
  39. ;;  
  40. ;; 111397357172144804920169018646854829611493432618108526724950070695867774004363
  41. ;; CL-USER> (time (expt-mod2 #x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
  42. ;;                           #xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140
  43. ;;                           #xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F))
  44. ;; Evaluation took:
  45. ;;   0.004 seconds of real time
  46. ;;   0.004012 seconds of total run time (0.004012 user, 0.000000 system)
  47. ;;   100.00% CPU
  48. ;;   4,383,363 processor cycles
  49. ;;   198,192 bytes consed
  50. ;;  
  51. ;; 111397357172144804920169018646854829611493432618108526724950070695867774004363
  52. ;; CL-USER> (time (expt-mod3 #x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
  53. ;;                           #xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140
  54. ;;                           #xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F))
  55. ;; Evaluation took:
  56. ;;   0.000 seconds of real time
  57. ;;   0.001031 seconds of total run time (0.001031 user, 0.000000 system)
  58. ;;   100.00% CPU
  59. ;;   1,118,187 processor cycles
  60. ;;   147,120 bytes consed
  61. ;;  
  62. ;; 111397357172144804920169018646854829611493432618108526724950070695867774004363
  63. ;; CL-USER> (time (expt-mod4 #x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
  64. ;;                           #xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140
  65. ;;                           #xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F))
  66. ;; takes forever
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement