Pythagorean triples: Difference between revisions

Content added Content deleted
(J: the easy implementation)
Line 112: Line 112:


pytr 10000 takes 4 seconds on this laptop, and time to complete grows with square of perimeter, so pytr 1e6 should take a something like 11 hours using this algorithm on this machine.
pytr 10000 takes 4 seconds on this laptop, and time to complete grows with square of perimeter, so pytr 1e6 should take a something like 11 hours using this algorithm on this machine.

A slightly smarter approach:

<lang j>trips=:3 :0
'm n'=. |:(#~ 1 = 2 | +/"1)(#~ >/"1),/,"0/~}.i.<.%:y
prim=. (#~ 1 = 2 +./@{. |:) (#~ y>:+/"1)m (-&*:,. +:@*,. +&*:) n
(,.~ e.&prim) ~./:~;<@(*/~ 1 + y i.@<.@% +/)"1 prim
)</lang>

usage for trips is the same as for pytr. Thus:

<lang j> (# , 1 {. +/) trips 10
0 0
(# , 1 {. +/) trips 100
17 7
(# , 1 {. +/) trips 1000
325 70
(# , 1 {. +/) trips 10000
4858 703
(# , 1 {. +/) trips 100000
64741 7026
(# , 1 {. +/) trips 1000000
808950 70229
(# , 1 {. +/) trips 10000000
9706567 702309</lang>

The last line took about 16 seconds.


=={{header|Java}}==
=={{header|Java}}==