ClearAll[Heron] Heron[a_, b_, c_] := With[{s = (a + b + c)/2}, Sqrt[s (s - a) (s - b) (s - c)]] PrintTemporary[Dynamic[{a, b, c}]]; results = Reap[ Do[ If[a < b + c \[And] b < c + a \[And] c < a + b, If[GCD[a, b, c] == 1, If[IntegerQ[Heron[a, b, c]], Sow[<|"Sides" -> {a, b, c}, "Area" -> Heron[a, b, c], "Perimeter" -> a + b + c, "MaximumSide" -> Max[a, b, c]|>] ] ] ] , {a, 1, 200}, {b, a, 200}, {c, b, 200} ] ][[2, 1]]; results = SortBy[results, {#["Area"] &, #["Perimeter"] &, #["MaximumSide"] &}]; results // Length Take[results, 10] // Dataset Select[results, #["Area"] == 210 &] // Dataset