PHP程序出错


error in php program

我只是一个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;
    }
}
?>

试试这个:

        <?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";
        }
        ?>

编辑更新了代码,以处理"2"

试试这个(不使用循环)

function is_prime($p) {
    return ($p > 1) &&  (($p%2 >= 1) && ($p%3 >= 1) && ($p%5 >= 1)) ||  in_array($p, [2,3,5]);
}

回声is_prime (15);

在它第一次运行的时候,你基本上通过调用这个来打破循环:

if (something) {
    break;
} else {
    break;
}

无论如何它都会破裂。

好吧,你的代码有点费解;乍一看,它似乎试图通过检查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.";
<?php
echo "TEST'r'n";
$n=15;
for($i=2; $i<=$n; $i++)
{
echo "I= $i 'r'n";
for($j=2; $j<=$i-1; $j++)
    {
        $k = $i%$j;
        if($k==0)
    {
            break;
        } else { 
            echo $i."is prime 'r'n";
        }
        break;
    }
}

我认为你的第二个for循环是不正确的。

for($i=2; $i<=$n; $i++) {
   echo "<br />";
   for($j=2; $j<=$i-1; $j++) {
      ...
$j的第一个值是2。第一次,$i的第一个值还是2。现在,看看第二个for循环代码。第一次将是这样的:
for($j=2; $j<=2-1; $j++) ... // for($j=2; $j<=1; $j++)

这个条件根本不成立:2<=1