$divsors = array(); $sqrt_n = sqrt($n); for ($i = 1; $i <= $sqrt_n; $i++) { if ($n % $i == 0) { $divisors[] = $i; $divisors[] = $n / $i; } } return array_unique($divisors); } // loop houses until > target $house = 0; $elves = array(); while (!isset($target_met)) { $house++; $e = get_divisors($house); foreach ($e as $key => $elf) { if (!isset($elves[$elf])) { $elves[$elf] = 1; } else { $elves[$elf]++; } if ($elves[$elf] > 50) { unset($e[$key]); } } $presents = array_sum($e) * 11; if ($presents >= $target) { $target_met = true; } }
{ if(($house % $e) == 0) $presents += $e*10; } if($presents >= $target) $target_met = true; } */ // function to get divisors of an integer // still slow, but fast enough to crack the answer function get_divisors($n) { $divsors = array(); $sqrt_n = sqrt($n); for ($i = 1; $i <= $sqrt_n; $i++) { if ($n % $i == 0) { $divisors[] = $i; $divisors[] = $n / $i; } } return array_unique($divisors); } // loop houses until > target $house = 0; while (!isset($target_met)) { $house++; $presents = array_sum(get_divisors($house)) * 10; if ($presents >= $target) { $target_met = true; } } // output answer echo "Answer: " . $house;