Robson » Code » PHP » Natural Number Sum

 
<?
 
   // 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);
   }
 
?>
 
© 2004-17 robson | cc unless stated