RosettaCodeData/Task/Pythagorean-triples/Pluto/pythagorean-triples.pluto
2026-04-30 12:34:36 -04:00

25 lines
701 B
Text

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