在PHP中用最短的代码找到第n个Fibonacci素数

时间:2015-08-20 02:29:18

标签: php arrays primes fibonacci

我在最近的一次采访中被问到了这个问题。我能够回答,但面试官根本没有留下深刻印象,并转向下一个问题。

所以我需要找到第n个Fibonacci素数。这是我的理解:我们生成一个斐波纳契数列,然后将素数存储在数组中的那些系列中;对于第n个素数,我们迭代并返回数组中的第n个数字。这是对的吗?

function fibonacci ($number)
{
    if ($number==0)
        return 0;
    if ($number ==1)
        return 1;
    if ($number>=2)
    {
        return fibonacci($number-1)+fibonacci($number-2);
    }
}
function is_prime ($num)
{
    if ($num <2)
        return;
    if ($num >=2)
    {
        $floor = floor (sqrt($num));
        for ($i=2 ; $i <=$floor ; $i++)
        {
            if ($num % $i == 0) // number has factors
                return; // so return
        }
        return $num;
    }
}
$series = array();
for ($i=0 ; $i<24 ; $i++) // randomly used 24
{
    $series[] = fibonacci($i);
}
function fibonacci_prime($s)
{
    $final = array_map ("is_prime", $s);
    // array_filter because we don't want to see null elements
    echo '<pre>',print_r(array_filter($final)),'</pre>';
}
fibonacci_prime($series);

output
Array
(
    [3] => 2
    [4] => 3
    [5] => 5
    [7] => 13
    [11] => 89
    [13] => 233
    [17] => 1597
    [23] => 28657
)
1

我想知道是否有更好的方法来实现这一目标?

0 个答案:

没有答案