15 lines
467 B
Racket
15 lines
467 B
Racket
#lang racket
|
|
(require math)
|
|
|
|
(define (pair-factorize n)
|
|
"Return all two-number factorizations of a number"
|
|
(let ([up-limit (integer-sqrt n)])
|
|
(map (λ (x) (list x (/ n x)))
|
|
(filter (λ (x) (<= x up-limit)) (divisors n)))))
|
|
|
|
(define (semiprime n)
|
|
"Determine if a number is semiprime i.e. a product of two primes.
|
|
Check if any pair of complete factors consists of primes."
|
|
(for/or ((pair (pair-factorize n)))
|
|
(for/and ((el pair))
|
|
(prime? el))))
|