php程序中的错误

php程序中的错误,php,Php,我只是PHP的初学者。我曾试图写一个素数程序,但结果不正确。我找不到错误。我怎样才能纠正这个问题?这是我的密码: <?php $n=15; for($i=2; $i<=$n; $i++) { echo "<br />"; for($j=2; $j<=$i-1; $j++) { $k=$i%$j; if($k==0) { break; } else echo $i

我只是PHP的初学者。我曾试图写一个素数程序,但结果不正确。我找不到错误。我怎样才能纠正这个问题?这是我的密码:

<?php
$n=15;
for($i=2; $i<=$n; $i++)
{
echo "<br />";
for($j=2; $j<=$i-1; $j++)
    {
        $k=$i%$j;
        if($k==0)
        {

        break;
        }
        else echo $i."is prime";
        break;
    }

}
?>

在循环第一次运行时,您通过调用以下命令来打破循环:

if (something) {
    break;
} else {
    break;
}
不管怎样它都会破裂。你需要休息一下。

试试这个:

        <?php
        $n=15;
        for($i=2; $i<=$n; $i++)
        {
            $k = 1;     //assume that it is prime

            for($j=2; $j<$i; $j++)  //if $i is 2, then it won't enter the loop as it will not match the condition ($j<$i)
            {
                $k=$i%$j;
                if($k==0) 
                    break;  //if not prime, $k will be set as 0. So, break.

            }
            if($k!=0)   // if $k <> 0, then it is prime
                echo "<br />" . $i." is prime";
        }

        ?>

嗯,你的代码理解起来有点混乱;乍一看,它似乎是在试图通过检查N的每个除数来确定素性,但你已经得到了我一开始没有看到的外环。。。哦,孩子

如果您只是想弄清楚某个数字N是否为素数,那么以下方法应该有效:

$n = 15
$prime = true;
for ($i = 2; $i < sqrt($n); $i++) {
    if ($n % $i == 0) {
        $prime = false;
        break;
    }
}

echo $n . " is " . ($prime ? "" : "not") . " prime.";
$n=15
$prime=true;
对于($i=2;$i
我认为您的循环密码不正确

for($i=2; $i<=$n; $i++) {
   echo "<br />";
   for($j=2; $j<=$i-1; $j++) {
      ...
对于($i=2;$i试试这个:(使用循环省略)


回声是素数(15)

你遗漏了你的程序应该做什么和它正在做什么…我想显示15以内的素数。但是我的代码显示了以下结果。3是素数5是素数7是素数9是素数11是素数13是素数15是素数对我来说看起来像素数的,哦,等等9我的结果显示9是素数。但是9可以被divided by 1,3,9你到底想要什么结果?从技术上讲,第二个中断甚至不是条件的一部分,因为
else
没有使用括号。所以实际上,中断总是被调用,句号。太好了。谢谢。它现在工作得很好。2也是一个素数。为什么结果没有显示出来?因为你的循环在n-1或1运行,但从2开始是的。我没有注意到。:)我已经更新了代码,请检查它现在是否工作。实际上。。。我想我应该注意,这只适用于大于等于2的数字,如果循环通过它们,0和1都显示为素数。如果从$n=15后的负数分号开始,就会发生这种情况
for($i=2; $i<=$n; $i++) {
   echo "<br />";
   for($j=2; $j<=$i-1; $j++) {
      ...
for($j=2; $j<=2-1; $j++) ... // for($j=2; $j<=1; $j++)
function is_prime($p) {
    return ($p > 1) &&  (($p%2 >= 1) && ($p%3 >= 1) && ($p%5 >= 1)) ||  in_array($p, [2,3,5]);
}