MODULE PyTriple64 EXPORTS Main; IMPORT IO, Fmt; VAR tcnt, pcnt, max, i: INTEGER; PROCEDURE NewTriangle(a, b, c: INTEGER; VAR tcount, pcount: INTEGER) = VAR perim := a + b + c; BEGIN IF perim <= max THEN pcount := pcount + 1; tcount := tcount + max DIV perim; NewTriangle(a-2*b+2*c, 2*a-b+2*c, 2*a-2*b+3*c, tcount, pcount); NewTriangle(a+2*b+2*c, 2*a+b+2*c, 2*a+2*b+3*c, tcount, pcount); NewTriangle(2*b+2*c-a, b+2*c-2*a, 2*b+3*c-2*a, tcount, pcount); END; END NewTriangle; BEGIN i := 100; REPEAT max := i; tcnt := 0; pcnt := 0; NewTriangle(3, 4, 5, tcnt, pcnt); IO.Put(Fmt.Int(i) & ": " & Fmt.Int(tcnt) & " Triples, " & Fmt.Int(pcnt) & " Primitives\n"); i := i * 10; UNTIL i = 10000000; END PyTriple64.