You may also find my method of generating PPTs useful. It generates all ppt's {a, b, c}, with the short leg as the input, where a<b<c. It is easily modified if you want all ppts with any leg equal to the input value by changing this part # > x to # > 0.
pyths[x_Integer] := (t = Select[Divisors[x^2], # <= x &];
m = Sort[Select[(x^2 - t^2)/(2 t), IntegerQ[#] && # > x &]];
Table[{x, m[[i]], Sqrt[x^2 + m[[i]]^2]}, {i, 1, Length[m]}])
or primitive ppt's
primpyths[x_Integer] := (t = Select[Divisors[x^2], # <= x &];
m = Sort[Select[(x^2 - t^2)/(2 t),
IntegerQ[#] && # > x && GCD[x, #] == 1 &]];
Table[{x, m[[i]], Sqrt[x^2 + m[[i]]^2]}, {i, 1, Length[m]}])
pyths[1000]
{{1000, 1050, 1450}, {1000, 1875, 2125}, {1000, 2400, 2600}, {1000,
3045, 3205}, {1000, 4950, 5050}, {1000, 6210, 6290}, {1000, 9975,
10025}, {1000, 12480, 12520}, {1000, 15609, 15641}, {1000, 24990,
25010}, {1000, 31242, 31258}, {1000, 49995, 50005}, {1000, 62496,
62504}, {1000, 124998, 125002}, {1000, 249999, 250001}}
primpyths[1000]
{{1000, 15609, 15641}, {1000, 249999, 250001}}