Hello Folk我正在尝试创建一个PHP函数,它找到给定整数的最近素数: 例如,如果您将函数命名为“nearest_prime”,则可以使用它:
$a = 399823;
$b = nearest_prime($a);
echo $b;
*请记住,整数可以是任何大小,并且最接近的素数可以高于或低于整数。如果两个整数与整数等距,则返回较低的整数。
答案 0 :(得分:0)
我只是简单地测试了一下,但似乎有效。肯定有更有效的方式。
function nearest_prime($num)
{
$up = NULL;
$down = NULL;
$counter = 1;
while($up === NULL && $down === NULL)
{
$going_up = $num + $counter;
$prime_up = TRUE;
for ($k = 2;$k < $going_up;$k++)
{
if (($going_up % $k) === 0)
{
$prime_up = FALSE;
}
}
if ($prime_up === TRUE)
{
$up = $going_up;
}
$going_down = $num - $counter;
$prime_down = TRUE;
for ($k = 2;$k < $going_down;$k++)
{
if (($going_down % $k) === 0)
{
$prime_down = FALSE;
}
}
if ($prime_down === TRUE)
{
$down = $going_down;
}
$counter++;
}
$return = array();
if(!is_null($up))
{
$return[] = $up;
}
if(!is_null($down))
{
$return[] = $down;
}
return implode(',',$return);
}