Thursday, February 04, 2010

Project Euler Problem 7

Project Euler Problem 7: Find the 10001st prime.

<?php

function is_prime($n)
{
if ($n < 5) return ($n == 2 || $n == 3);
for ($p = 2; $p <= 3; $p++)
if (!($n%$p)) return (($n /= $p) == 1);
for ($p = 5, $r = floor(sqrt($n)); $p <= $r; $p += 6)
{
if (!($n%$p)) return false;
if (!($n%($p+2))) return false;
}
return true;
}

function nth_prime($n)
{
if ($n < 1) return false;
if ($n < 3) return $n+1;
for ($n -= 2, $p = 5 ; ; $p += 6)
{
if (is_prime($p) && !--$n) break;
if (is_prime($p+2) && !--$n)
{
$p += 2;
break;
}
}
return $p;
}

echo nth_prime(10001);

?>

0 Comments...

Post a Comment

 · Blog Index