2017-01-31 19 views
0

Функция для простых чисел понятна, поэтому я пропустил ее.Как выбрать следующий номер в цикле?

$a=10; 
$z=30; 
for($prime = $a; $prime<$z; $prime++) 
{ if 
(Prim($prime) == TRUE) 
{ echo $prime."<br/>";}} 

Теперь я хочу, чтобы выбрать следующий член последовательности, а также для того, чтобы выполнить операцию между переменной $prime и $next_prime, пока цикл продолжается - как, например:

$prime_gap=bcsub($next_prime, $prime); 

Независимо от решений, которые я нахожу, и я стараюсь, это никогда не будет правильным. Это, конечно, очень просто, но я уже отчаялся.

+1

На каком языке этот код? –

+0

Это, конечно, PHP - единственный код, который я знаю (помимо html, конечно) – HdL

ответ

0

Я предлагаю вам начать с создания функции next_prime(). Как это, например:

function next_prime($n) { 
    do { 
     $n++; 
    } while (!Prim($n)); 
    return $n; 
} 

Затем вы можете реорганизовать код довольно легко:

$a=10; 
$z=30; 
for ($p1=next_prime($a),$p2=next_prime($p1); $p2<$z; $p1=$p2,$p2=next_prime($p2)) { 
    if (some_function($p1, $p2)) { 
     echo "I like $p1 and $p2\n"; 
    } 
} 
+0

Привет всем! Это выглядит великолепно, спасибо большое. Да, я хочу, чтобы это было просто, потому что мне нужно такое решение неоднократно, для других проблем. На самом деле я удивляюсь, что в php.net нет готовой функции для нее, только для массивов функция next(). Когда я буду готов, я покажу вам это. – HdL

+0

@HdL: На этом сайте проявите свою признательность, положив все полезные ответы. Вы делаете это, нажимая стрелку вверх в левом верхнем углу ответа. Кроме того, примите наилучший ответ (если он действительно отвечает на ваш вопрос), щелкнув галочку возле левого верхнего угла ответа. Это лучше, чем сказать спасибо в комментарии. Это также помогает другим понять, что на ваш вопрос был дан ответ. –

0

if добавить в цикл не так хорошо, но если вы хотите что-то простое и легко понять, вы все еще можете использовать его (я включаю имя от $ премьер & $ next_prime до $ прайм & $ previous_prime, я думаю, что это имеет смысл)

$a=10; 
$z=30; 
$previous_prime = 0; 

for($prime = $a; $prime<$z; $prime++) 
{ 
    if (Prim($prime) == TRUE) 
    { 
    echo $prime."<br/>"; 
    if ($previous_prime == 0) { 
     $previous_prime = $prime 
    } else 
    { 
     $prime_gap = $prime - $previous_prime; 
     $previous_prime = $prime; 
    } 
    } 
}