Pythagorean triples: Difference between revisions
Content added Content deleted
(Added PicoLisp) |
(→{{header|Euphoria}}: Euphoria example added) |
||
Line 240: | Line 240: | ||
10000000 [702309, 9706567] |
10000000 [702309, 9706567] |
||
100000000 [7023027, 113236940]</pre> |
100000000 [7023027, 113236940]</pre> |
||
=={{header|Euphoria}}== |
|||
{{trans|D}} |
|||
<lang euphoria>function tri(atom lim, sequence in) |
|||
sequence r |
|||
atom p |
|||
p = in[1] + in[2] + in[3] |
|||
if p > lim then |
|||
return {0, 0} |
|||
end if |
|||
r = {1, floor(lim / p)} |
|||
r += tri(lim, { in[1]-2*in[2]+2*in[3], 2*in[1]-in[2]+2*in[3], 2*in[1]-2*in[2]+3*in[3]}) |
|||
r += tri(lim, { in[1]+2*in[2]+2*in[3], 2*in[1]+in[2]+2*in[3], 2*in[1]+2*in[2]+3*in[3]}) |
|||
r += tri(lim, {-in[1]+2*in[2]+2*in[3], -2*in[1]+in[2]+2*in[3], -2*in[1]+2*in[2]+3*in[3]}) |
|||
return r |
|||
end function |
|||
atom max_peri |
|||
max_peri = 10 |
|||
while max_peri <= 100000000 do |
|||
printf(1,"%d: ", max_peri) |
|||
? tri(max_peri, {3, 4, 5}) |
|||
max_peri *= 10 |
|||
end while</lang> |
|||
Output: |
|||
<pre>10: {0,0} |
|||
100: {7,17} |
|||
1000: {70,325} |
|||
10000: {703,4858} |
|||
100000: {7026,64741} |
|||
1000000: {70229,808950} |
|||
10000000: {702309,9706567} |
|||
100000000: {7023027,113236940} |
|||
</pre> |
|||
=={{header|Fortran}}== |
=={{header|Fortran}}== |