sub triang_decompose_2 { my($goal, $found, $n0, $n1, $n2); for $goal (0 .. 80) { $found = 0; $n0 = 0; while (!$found && $n0*($n0+1)/2 <= $goal) { $n1 = 0; while (!$found && $n1 <= $n0) { $n2 = 0; while (!$found && $n2 <= $n1) { if ($goal == $n0*($n0+1)/2 + $n1*($n1+1)/2 + $n2*($n2+1)/2 && !$found) { say $goal, " = ", $n0*($n0+1)/2, " + ", $n1*($n1+1)/2, " + ", $n2*($n2+1)/2; $found = 1; } $n2++; } $n1++; } $n0++; } if (!$found) { say $goal, " has no decomposition."; } } }