Мне задали этот вопрос в недавнем интервью. Я смог ответить, но интервьюер не был впечатлен и перешел к следующему вопросу.
Поэтому мне нужно найти n-е простое число Фибоначчи. Это мое понимание: мы генерируем ряд Фибоначчи и затем сохраняем простые числа в этих рядах в массиве; и для 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
Мне интересно, есть ли лучшие способы добиться этого?
Задача ещё не решена.
Других решений пока нет …