-4

大家好,我正在尝试创建一个 PHP 函数来查找与给定整数最近的素数:例如,如果您将函数命名为“nearest_prime”,它将像这样使用:

            $a = 399823;
            $b = nearest_prime($a);
            echo $b;

*请记住,整数可以是任意大小,最接近的素数可以高于或低于整数。如果两个整数与整数等距,则返回较小的一个。

4

1 回答 1

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);
}
于 2013-02-10T22:14:06.530 回答