-4

こんにちはフォーク私は与えられた整数に最も近い素数を見つけるPHP関数を作成しようとしています。たとえば、関数に「nearest_prime」という名前を付けた場合、次のように使用されます。

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

*整数は任意のサイズにすることができ、最も近い素数は整数の上または下にすることができることに注意してください。2つの整数が整数から等距離にある場合は、小さい方の整数を返します。

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 に答える