3v4l.org

run code in 300+ PHP versions simultaneously
<?php declare(strict_types=1); var_dump(PrimePalindromeFinder::find(1000, 1)); var_dump(PrimePalindromeFinder::find(10, 1)); var_dump(PrimePalindromeFinder::find(500, 400)); var_dump(PrimePalindromeFinder::findStrict(1000, 1)); var_dump(PrimePalindromeFinder::findStrict(10, 1)); try { var_dump(PrimePalindromeFinder::findStrict(500, 400)); } catch(\Exception $e) { var_dump($e->getMessage()); } class PrimePalindromeFinder { public static function find(int $start, int $end) { for($i = $start; $i >= $end; $i--) { if(self::isPalindrome($i) && self::isPrime($i)) { return $i; } } return false; } public static function findStrict(int $start, int $end):int { for($i = $start; $i >= $end; $i--) { if(self::isPalindrome($i) && self::isPrime($i)) { return $i; } } throw new \Exception("No Prime Palindrome found between {$start} and {$end}"); } private static function isPalindrome(int $number):bool { $number = strval($number); for($i = 1; $i <= floor(strlen($number) / 2); $i++) { $from_start = substr($number, $i - 1, 1); $from_end = substr($number, $i * -1, 1); if($from_start !== $from_end) { return false; } } return true; } private static function isPrime(int $number):bool { if($number == 1) { return false; } if($number == 2) { return true; } if($number % 2 == 0) { return false; } for($i = 3; $i <= ceil(sqrt($number)); $i = $i + 2) { if($number % $i == 0) return false; } return true; } }

preferences:
55.08 ms | 402 KiB | 5 Q