Pythagorean quadruples: Difference between revisions

Content added Content deleted
Line 565: Line 565:
{{trans|Python}}
{{trans|Python}}


<lang racket>
<lang racket>#lang racket

</lang>
(require data/bit-vector)

(define (quadruples top)
(define top+1 (add1 top))
(define 1..top (in-range 1 top+1))
(define r (make-bit-vector top+1))
(define ab (make-bit-vector (add1 (sqr (* top 2)))))
(for* ((a 1..top) (b (in-range a top+1))) (bit-vector-set! ab (+ (sqr a) (sqr b)) #t))

(for/fold ((s 3))
((c 1..top))
(for/fold ((s1 s) (s2 (+ s 2)))
((d (in-range (add1 c) top+1)))
(when (bit-vector-ref ab s1)
(bit-vector-set! r d #t))
(values (+ s1 s2) (+ s2 2)))
(+ 2 s))

(for/list ((i (in-naturals 1)) (v (in-bit-vector r 1)) #:unless v) i))

(define (report n)
(printf "Those values of d in 1..~a that can't be represented: ~a~%" n (quadruples n)))

(report 2200)</lang>


{{out}}
{{out}}


<pre>Those values of d in 1..2200 that can't be represented: (1 2 4 5 8 10 16 20 32 40 64 80 128 160 256 320 512 640 1024 1280 2048)</pre>
<pre>
</pre>


=={{header|REXX}}==
=={{header|REXX}}==