PasteRack.org
Paste # 98522
2019-10-03 11:25:03

Forked from paste # 90720.

Fork as a new paste.

Paste viewed 160 times.


Embed:

Plot of Prime Parallelograms

  1. #lang racket
  2. ; https://gus-massa.blogspot.com.ar/2019/09/more-on-prime-parallelograms.html
  3.  
  4. (require math/number-theory)
  5. (require plot/pict)
  6. #;(plot-new-window? #t)
  7.  
  8. (require plot/utils)
  9. (define ((linear-ticks-format/no-sc) min max pre-ticks)
  10.   (define digits (digits-for-range min max))
  11.   (map (lambda (pt)
  12.          (real->plot-label (pre-tick-value pt) digits #f))
  13.        pre-ticks))
  14. (define (linear-ticks/no-sc) (ticks (linear-ticks-layout) (linear-ticks-format/no-sc)))
  15. (plot-x-ticks (linear-ticks/no-sc)) ; almost global change
  16. (plot-y-ticks (linear-ticks/no-sc)) ; almost global change
  17.  
  18. (define (binary-reverse x)
  19.   (let loop ([x x] [r 0])
  20.     (if (zero? x)
  21.        r
  22.        (loop (quotient x 2) (+ (* 2 r) (remainder x 2))))))
  23.  
  24. (define all (for/list ([i (in-range 1 65536)])
  25.               (vector i (- i (binary-reverse i)))))
  26.  
  27. (define prim (for/list ([i (in-range 1 65536)]
  28.                         #:when (prime? i))
  29.               (vector i (- i (binary-reverse i)))))
  30.  
  31. (plot #:title "All vs Prime Paralelograms"
  32.       (list (points all
  33.                     #:sym 'dot
  34.                     #:color 'black #:alpha .1)
  35.             (points prim
  36.                     #:sym 'dot
  37.                     #:color 'blue #:alpha .5))
  38.       #:x-label "n" #:y-label "f(n)"
  39.       #:y-min -32768 #:y-max 65536
  40.       #:x-min 0
  41.       #:width 400 #:height 600)

=>

image