Pythagorean triples: Difference between revisions

Content added Content deleted
(added FreeBASIC)
(added ZX Spectrum Basic)
Line 3,555: Line 3,555:
</pre>
</pre>
Max stack size is arbitrary but not adjustable.
Max stack size is arbitrary but not adjustable.
=={{header|ZX Spectrum Basic}}==
ZX Spectrum: 8 bit microprocessor 3.5 Mhz doing all the work.
In an effort to get some decent speed the program is made to be as fast as it can.

It takes about 90 seconds for limit = 10 000 and 17 minutes for limit=100 000 and 3.5 hours for limit = 1000 000.

To set the limits.
Set in line nr: 1 L to the starting limit.
Set in line nr: 11 IF L<=(last limit to calculate)

Ex. start as limit 100 and end on limit 1000.
Set in line nr: 1 LET L=100.
Set in line nr: 11 IF L<=1000 THEN GO TO 2

<lang zxbasic> 1 LET Y=0: LET X=0: LET Z=0: LET V=0: LET U=0: LET L=10: LET T=0: LET P=0: LET N=4: LET M=0: PRINT "limit trip. prim."
2 FOR U=2 TO INT (SQR (L/2)): LET Y=U-INT (U/2)*2: LET N=N+4: LET M=U*U*2: IF Y=0 THEN LET M=M-U-U
3 FOR V=1+Y TO U-1 STEP 2: LET M=M+N: LET X=U: LET Y=V
4 LET Z=Y: LET Y=X-INT (X/Y)*Y: LET X=Z: IF Y<>0 THEN GO TO 4
5 IF X>1 THEN GO TO 8
6 IF M>L THEN GO TO 9
7 LET P=P+1: LET T=T+INT (L/M)
8 NEXT V
9 NEXT U
10 PRINT L;TAB 8;T;TAB 16;P
11 LET N=4: LET T=0: LET P=0: LET L=L*10: IF L<=100000 THEN GO TO 2</lang>

<pre>limit trip. prim.
10 0 0
100 17 7
1000 325 70
10000 4858 703
100000 64741 7026
1000000 808950 70229</pre>



[[Category:Geometry]]
[[Category:Geometry]]