<? // natural number sums v1.0 // displays all the ways you can make the specified number using natural numbers $amount = 10; function combinations($number, $start, $max) { global $amount; if ($max == 1) echo $start . str_repeat(' 1', $number) . '<br />'; else if ($number == 1) echo $start . ' 1<br />'; else if ($number == 2) echo $start . ' 2<br />' . $start . ' 1 1<br />'; else { if ($number && $number <= $max) echo $start . ' ' . $number . '<br />'; $values = explode(' ', $start . ' ' . $number); sort($values); for ($a = $values[0]; $a > 0; $a--) { $values = explode(' ', $start . ' ' . $a); sort($values); combinations($number-$a, $start . ' ' . $a, $values[0]); } } } echo $amount . '<br />'; for ($a = $amount-1; $a > 0; $a--) { if ($a + 1 == $amount) echo $a . ' 1<br />'; else combinations($amount-$a, $a, $a); } ?>