Example #1
0
 /**
  *
  * @param $n
  * @param $divider
  * @return bool  если $n! делится на $divider без остатка возвращает true, иначе false
  * @throws \InvalidArgumentException
  */
 public function execute($n, $divider)
 {
     if ((int) $n != $n || (int) $divider != $divider || $n < 1 || $divider < 1) {
         throw new \InvalidArgumentException("wrong input params");
     }
     if ($n >= $divider) {
         return true;
     }
     if ($this->isPrimeNumber($divider)) {
         return false;
     }
     $factorsDivider = $this->factor->factorize($divider);
     $i = 1;
     while ($i <= $n) {
         $factorsMultipliers = $this->factor->factorize($i);
         $this->applyFactorsMultipliers($factorsDivider, $factorsMultipliers);
         if ($this->isEnoughFactors($factorsDivider)) {
             return true;
         }
         $i++;
     }
     return false;
 }