大家好,我正在尝试创建一个 PHP 函数来查找与给定整数最近的素数:例如,如果您将函数命名为“nearest_prime”,它将像这样使用:
$a = 399823;
$b = nearest_prime($a);
echo $b;
*请记住,整数可以是任意大小,最接近的素数可以高于或低于整数。如果两个整数与整数等距,则返回较小的一个。
大家好,我正在尝试创建一个 PHP 函数来查找与给定整数最近的素数:例如,如果您将函数命名为“nearest_prime”,它将像这样使用:
$a = 399823;
$b = nearest_prime($a);
echo $b;
*请记住,整数可以是任意大小,最接近的素数可以高于或低于整数。如果两个整数与整数等距,则返回较小的一个。
我只是简单地测试了这个,但它似乎有效。肯定有更有效的方法。
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);
}