function q12($divisorCount) { // We can safely assume that the triangle number which is the sum of $divisorCount numbers // does not have $divisorCount divisors yet. $number = $divisorCount; while (true) { ++$number; $triangleNumber = Number::triangle($number); // It should be more likely that an even number be the first number to have more divisors, so lets skip uneven // numbers if ($triangleNumber & 1 !== 0) { continue; } $numberOfDivisors = Number::getDivisorsCount($triangleNumber); if ($numberOfDivisors > $divisorCount) { return $triangleNumber; } } }
function q45($t, $p, $h) { $px = Number::pentagonal($p); $tx = Number::triangle($t); while (true) { $hx = Number::hexagonal(++$h); $count = 1; while ($hx >= Number::pentagonal($p + 1)) { $px = Number::pentagonal(++$p); } if ($px === $hx) { ++$count; } while ($hx >= Number::triangle($t + 1)) { $tx = Number::triangle(++$t); } if ($tx === $hx) { ++$count; } if ($count === 3) { return $hx; } } }