Pythagorean triples: Difference between revisions

(Go solution)
Line 167:
Up to 100000000: 113236940 triples, 7023027 primitives.</lang>
 
=={{header|Common Lisp}}==
<lang lisp>(defun mmul (a b)
(loop for x in a collect
(loop for y in x
for z in b sum (* y z))))
 
(defun count-tri (lim)
(let ((prim 0) (cnt 0))
(labels ((count1 (tr)
(let ((peri (apply #'+ tr)))
(when (<= peri lim)
(incf prim)
(incf cnt (truncate lim peri))
(count1 (mmul '(( 1 -2 2) ( 2 -1 2) ( 2 -2 3)) tr))
(count1 (mmul '(( 1 2 2) ( 2 1 2) ( 2 2 3)) tr))
(count1 (mmul '((-1 2 2) (-2 1 2) (-2 2 3)) tr))))))
(count1 '(3 4 5))
(format t "~a: ~a prim, ~a all~%" lim prim cnt))))
 
(loop for p from 2 do (count-tri (expt 10 p)))</lang>output<lang>100: 7 prim, 17 all
1000: 70 prim, 325 all
10000: 703 prim, 4858 all
100000: 7026 prim, 64741 all
1000000: 70229 prim, 808950 all
10000000: 702309 prim, 9706567 all
...</lang>
=={{header|D}}==
{{trans|C}}
Anonymous user