php程序中的错误
我只是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
$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]);
}