与给定整数最接近的素数

  • 本文关键字:最接近 整数 php
  • 更新时间 :
  • 英文 :


Hello Folk我正在尝试创建一个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);
}

最新更新