Prime conspiracy: Difference between revisions

+Racket
m (Convert to a task.)
(+Racket)
Line 1,842:
9 -> 7 count: 58130 frequency: 5.81%
9 -> 9 count: 42843 frequency: 4.28%
</pre>
 
=={{header|Racket}}==
 
<lang racket>#lang racket
 
(require math/number-theory)
 
(define limit 1000000)
 
(define-values (table _)
(for/fold ([table (hash)] [prev 2]) ([p (in-list (next-primes 2 (sub1 limit)))])
(define p-mod (modulo p 10))
(values (hash-update table (cons prev p-mod) add1 0) p-mod)))
 
(define (pair<? p q) (or (< (car p) (car q)) (and (= (car p) (car q)) (< (cdr p) (cdr q)))))
 
(printf "~a first primes. Transitions prime % 10 → next-prime % 10.\n" limit)
(for ([item (sort (hash->list table) pair<? #:key car)])
(match-define (cons (cons x y) freq) item)
(printf "~a → ~a count: ~a frequency: ~a %\n"
x y (~a freq #:width 8 #:align 'right) (~r (* 100 freq (/ 1 limit)) #:precision '(= 2))))</lang>
 
{{out}}
<pre>
1000000 first primes. Transitions prime % 10 → next-prime % 10.
1 → 1 count: 42853 frequency: 4.29 %
1 → 3 count: 77475 frequency: 7.75 %
1 → 7 count: 79453 frequency: 7.95 %
1 → 9 count: 50153 frequency: 5.02 %
2 → 3 count: 1 frequency: 0.00 %
3 → 1 count: 58255 frequency: 5.83 %
3 → 3 count: 39668 frequency: 3.97 %
3 → 5 count: 1 frequency: 0.00 %
3 → 7 count: 72827 frequency: 7.28 %
3 → 9 count: 79358 frequency: 7.94 %
5 → 7 count: 1 frequency: 0.00 %
7 → 1 count: 64230 frequency: 6.42 %
7 → 3 count: 68595 frequency: 6.86 %
7 → 7 count: 39603 frequency: 3.96 %
7 → 9 count: 77586 frequency: 7.76 %
9 → 1 count: 84596 frequency: 8.46 %
9 → 3 count: 64371 frequency: 6.44 %
9 → 7 count: 58130 frequency: 5.81 %
9 → 9 count: 42843 frequency: 4.28 %
</pre>
 
Anonymous user