#!/usr/bin/perl -w # decompose sums to sets of summands use strict; use warnings; use vars qw($sum $size @temp @summands $prev $next); $sum = 10; $prev = 2; $next = $sum - $prev; while ($prev <= $next) { break(); } $size += scalar(@summands); for (my $i = 0 ; $i < $size ; $i++) { @temp = split(",",$summands[$i]); $sum = pop(@temp); $prev = 2; $next = $sum - $prev; while ($prev <= $next) { break(); } } for (@summands) { print "$_\n"; } sub break { push(@temp, $prev); push(@temp, $next); push(@summands, join(",",@temp)); @temp = (); $prev++; $next = $sum - $prev; }