最接近给定整数的素数

时间:2013-02-10 21:52:16

标签: php

Hello Folk我正在尝试创建一个PHP函数,它找到给定整数的最近素数:        例如,如果您将函数命名为“nearest_prime”,则可以使用它:

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

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

1 个答案:

答案 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);
}