【问题标题】:How to select the next number in a loop?如何在循环中选择下一个数字?
【发布时间】:2017-01-31 12:25:44
【问题描述】:

素数的功能很清楚,所以我省略了。

$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);

无论我找到并尝试什么解决方案,都不是正确的解决方案。这当然很简单,但我已经绝望了。

【问题讨论】:

  • 该代码是什么语言的?
  • 当然是 PHP - 我知道的唯一代码(当然除了 html)

标签: php loops math element next


【解决方案1】:

我建议您首先创建一个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";
    }
}

【讨论】:

  • 大家好!看起来很壮观,非常感谢。是的,我想保持简单,因为我反复需要这种解决方案,对于其他问题也是如此。其实我想知道php.net中没有现成的函数,只有数组函数next()。当我准备好时,我会展示给你看。
  • @HdL:在这个网站上,通过投票所有有用的答案来表达你的感激之情。您可以通过单击答案左上角的向上箭头来做到这一点。此外,通过单击答案左上角附近的复选标记来接受最佳答案(如果它确实回答了您的问题)。这比在评论中说谢谢要好。它还可以帮助其他人看到您的问题已得到解答。
【解决方案2】:

我在for循环中添加的if不是很好,但是如果你想要一些简单易懂的东西,你仍然可以使用它(我将名称从$prime & $next_prime 改为$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;
     }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 2021-12-18
    • 2021-11-21
    • 2021-12-04
    • 1970-01-01
    相关资源
    最近更新 更多