Pythagorean triples: Difference between revisions
m
ANSI Standard BASIC and BBC BASIC moved to the BASIC section.
(→{{header|Raku}}: First, brute-force solution was not restricting results to the perimeter limit.) |
m (ANSI Standard BASIC and BBC BASIC moved to the BASIC section.) |
||
Line 381:
Up to 10 ** 8 : 113236940 Triples, 7023027 Primitives
Up to 10 ** 9 : 1294080089 Triples, 70230484 Primitives</pre>
=={{header|ANSI Standard BASIC}}==▼
<syntaxhighlight lang="ansi standard basic">100 DECLARE EXTERNAL SUB tri▼
110 !▼
120 PUBLIC NUMERIC U0(3,3), U1(3,3), U2(3,3), all, prim▼
130 DIM seed(3)▼
140 MAT READ U0, U1, U2▼
150 DATA 1, -2, 2, 2, -1, 2, 2, -2, 3▼
160 DATA 1, 2, 2, 2, 1, 2, 2, 2, 3▼
170 DATA -1, 2, 2, -2, 1, 2, -2, 2, 3▼
180 !▼
190 MAT READ seed▼
200 DATA 3, 4, 5▼
210 FOR power = 1 TO 7▼
220 LET all = 0▼
230 LET prim = 0▼
240 CALL tri(seed, 10^power , all , prim)▼
250 PRINT "Up to 10^";power,▼
260 PRINT USING "######### triples ######### primitives":all,prim▼
270 NEXT power▼
280 END▼
290 !▼
300 EXTERNAL SUB tri(i(), mp, all, prim)▼
310 DECLARE EXTERNAL FUNCTION SUM▼
320 DECLARE NUMERIC t(3)▼
330 !▼
340 IF SUM(i) > mp THEN EXIT SUB▼
350 LET prim = prim + 1▼
360 LET all = all + INT(mp / SUM(i))▼
370 !▼
380 MAT t = U0 * i▼
390 CALL tri(t, mp , all , prim)▼
400 MAT t = U1 * i▼
410 CALL tri(t, mp , all , prim)▼
420 MAT t = U2 * i▼
430 CALL tri(t, mp , all , prim)▼
440 END SUB▼
450 !▼
460 EXTERNAL FUNCTION SUM(a())▼
470 LET temp = 0▼
480 FOR i=LBOUND(a) TO UBOUND(a)▼
490 LET temp = temp + a(i)▼
500 NEXT i▼
510 LET SUM = temp▼
520 END FUNCTION</syntaxhighlight>▼
=={{header|Arturo}}==
Line 588 ⟶ 540:
</pre>
=={{header|
▲==={{header|ANSI Standard BASIC}}===
{{trans|BBC BASIC}}
▲<syntaxhighlight lang="ansi standard basic">100 DECLARE EXTERNAL SUB tri
▲110 !
▲120 PUBLIC NUMERIC U0(3,3), U1(3,3), U2(3,3), all, prim
▲130 DIM seed(3)
▲140 MAT READ U0, U1, U2
▲150 DATA 1, -2, 2, 2, -1, 2, 2, -2, 3
▲160 DATA 1, 2, 2, 2, 1, 2, 2, 2, 3
▲170 DATA -1, 2, 2, -2, 1, 2, -2, 2, 3
▲180 !
▲190 MAT READ seed
▲200 DATA 3, 4, 5
▲210 FOR power = 1 TO 7
▲220 LET all = 0
▲230 LET prim = 0
▲240 CALL tri(seed, 10^power , all , prim)
▲250 PRINT "Up to 10^";power,
▲260 PRINT USING "######### triples ######### primitives":all,prim
▲270 NEXT power
▲280 END
▲290 !
▲300 EXTERNAL SUB tri(i(), mp, all, prim)
▲310 DECLARE EXTERNAL FUNCTION SUM
▲320 DECLARE NUMERIC t(3)
▲330 !
▲340 IF SUM(i) > mp THEN EXIT SUB
▲350 LET prim = prim + 1
▲360 LET all = all + INT(mp / SUM(i))
▲370 !
▲380 MAT t = U0 * i
▲390 CALL tri(t, mp , all , prim)
▲400 MAT t = U1 * i
▲410 CALL tri(t, mp , all , prim)
▲420 MAT t = U2 * i
▲430 CALL tri(t, mp , all , prim)
▲440 END SUB
▲450 !
▲460 EXTERNAL FUNCTION SUM(a())
▲470 LET temp = 0
▲480 FOR i=LBOUND(a) TO UBOUND(a)
▲490 LET temp = temp + a(i)
▲500 NEXT i
▲510 LET SUM = temp
▲520 END FUNCTION</syntaxhighlight>
==={{header|BBC BASIC}}===
The built-in array arithmetic is very well suited to this task!
<syntaxhighlight lang="bbcbasic"> DIM U0%(2,2), U1%(2,2), U2%(2,2), seed%(2)
|