function q4() { $highestPalindrome = null; for ($i = 999; $i > 99; --$i) { for ($j = 999; $j > 99; --$j) { $value = $i * $j; if ($value < $highestPalindrome) { break; } if (Str::isPalindrome($value)) { $highestPalindrome = $value; } } } return $highestPalindrome; }
function q35($max) { $primes = Prime::upTo($max); $primes = array_flip($primes); $circularPrimesCount = 0; foreach ($primes as $prime => $dontCare) { $length = strlen($prime); $isCircular = true; for ($i = 0; $i < $length; ++$i) { $rotatedPrime = Str::rotate($prime, $i); if (!isset($primes[$rotatedPrime])) { $isCircular = false; break; } } if ($isCircular) { ++$circularPrimesCount; } } return $circularPrimesCount; }