Special pythagorean triplet: Difference between revisions

→‎{{header|REXX}}: optimized execution of the three DO loops, used a better variable name for SUM, used better English when showing the number of solutions.
m (→‎{{header|REXX}}: added wording to the REXX section header.)
(→‎{{header|REXX}}: optimized execution of the three DO loops, used a better variable name for SUM, used better English when showing the number of solutions.)
Line 788:
<br>the next integer was used &nbsp; (for the previous DO loop).
<lang rexx>/*REXX pgm computes integers A, B, C that solve: 0<A<B<C; A+B+C = 1000; A^2+B^2 = C^2 */
parse arg ssum hi n . /*obtain optional argument from the CL.*/
if ssum=='' | ssum=="," then ssum= 1000 /*Not specified? Then use the default.*/
if hi=='' | hi=="," then hi= 1000 /* " " " " " " */
if n=='' | n=="," then n= 1 /* " " " " " " */
hi2hh= hi -2 2 /*N: number of solutions to find/show.*/
do j=1 for hi; @.j= j*j /*pre─compute squares ──► HI, inclusive*/
end /*j*/
#= 0; pad= left('', 9) /*#: the number of solutions found. */
do a=2 by 2 for hi2hh%2; by 2; aa= @.a /*go huntingsearch for solutions to the equations*/
do b=a+1; for hi2-a; ab= a + b /*calculatecompute the sum of two2 numbers (A,B) & squaresB).*/
if ab>hi hh then iterate a /*Sum of A+B>HI? Then stop with B's */
aabb= aa + @.b /*compute the sum of: A^2 + B^2 */
do c=b+1 for hi2-b while @.c <= aabb /*test integers that satisfy equations.*/
if @.c\==aabb then iterate > aabb then iterate b /*Square> " \=A^2+B^2? Then stopkeep with C's.searching*/
abc= ab if+ @.c \== aabb then iterate /*compute the sum of: " \=A^2 + B^2? Then+ C keep searching*/
if abc= ab + c > sum then iterate b /*compute the sum ofIs A + B+C > +SUM? C Then stop with C's.*/
if abc == ssum then call show then call show /*Does A+B+C " = SSUM? Then solution found*/
end end /*ac*/
if abc > s then iterate b /*Is " > S? Then stop with C's.*/
end end /*cb*/
end end /*ba*/
done: if #==0 then #= 'no'; say pad pad pad # ' solutionssolution's(#) "found.'"
end /*a*/
done: say pad pad pad # ' solutions found.'
exit 0 /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
s: if arg(1)==1 then return arg(3); return word(arg(2) 's', 1) /*simple pluralizer*/
show: #= #+1; say pad 'a=' a pad "b=" b pad 'c=' c; if #>=n then signal done; return</lang>
{{out|output|text=&nbsp; when using the default inputs:}}