25 lines
809 B
Racket
25 lines
809 B
Racket
#lang racket
|
|
(require (only-in math/number-theory factorize))
|
|
|
|
(define ((k-almost-prime? k) n)
|
|
(= k (for/sum ((f (factorize n))) (cadr f))))
|
|
|
|
(define KAP-table-values
|
|
(for/list ((k (in-range 1 (add1 5))))
|
|
(define kap? (k-almost-prime? k))
|
|
(for/list ((j (in-range 10)) (i (sequence-filter kap? (in-naturals 1))))
|
|
i)))
|
|
|
|
(define (format-table t)
|
|
(define longest-number-length
|
|
(add1 (order-of-magnitude (argmax order-of-magnitude (cons (length t) (apply append t))))))
|
|
(define (fmt-val v) (~a v #:width longest-number-length #:align 'right))
|
|
(string-join
|
|
(for/list ((r t) (k (in-naturals 1)))
|
|
(string-append
|
|
(format "║ k = ~a║ " (fmt-val k))
|
|
(string-join (for/list ((c r)) (fmt-val c)) "| ")
|
|
"║"))
|
|
"\n"))
|
|
|
|
(displayln (format-table KAP-table-values))
|