local sc = os.clock() local total = 0 local prim = 0 local max_peri = 0 local function new_tri(s0, s1, s2) local p = s0 + s1 + s2 if p <= max_peri then prim += 1 total += max_peri // p new_tri( 1*s0 - 2*s1 + 2*s2, 2*s0 - 1*s1 + 2*s2, 2*s0 - 2*s1 + 3*s2) new_tri( 1*s0 + 2*s1 + 2*s2, 2*s0 + 1*s1 + 2*s2, 2*s0 + 2*s1 + 3*s2) new_tri(-1*s0 + 2*s1 + 2*s2, -2*s0 + 1*s1 + 2*s2, -2*s0 + 2*s1 + 3*s2) end end max_peri = 100 while max_peri <= 1e10 do prim = 0 total = 0 new_tri(3, 4, 5) local secs = math.round(os.clock() - sc) print($"Up to {max_peri}: {total} triples, {prim} primitives, {secs} seconds") max_peri *= 10 end