PHPプログラムのエラー

私はPHP初心者です。私は素数のためのプログラムを書こうとしましたが、結果は正しくありません。私はエラーを見つけることができませんでした。どうすれば修正できますか?ここに私のコードです:

<?php
$n=15;
for($i=2; $i<=$n; $i++)
{
echo "
"; for($j=2; $j<=$i-1; $j++) { $k=$i%$j; if($k==0) { break; } else echo $i."is prime"; break; } } ?>
2
結果は何ですか?
追加された 著者 annonymously,
最後のブレークコマンドを取り出して、うまくいくはずです。
追加された 著者 annonymously,
それらは私に素数のように見える、ああ待つ9
追加された 著者 annonymously,
あなたはどんな結果を正確に探していますか? tehplayground.com/#qw7ggDmJq
追加された 著者 SeanNieuwoudt,
私の結果表示9は素数です。しかし、9は1で除算することができます3,9,9
追加された 著者 designersvsoft,
私は15以内に素数を表示したい。しかし私のコードは次の結果を表示する。 3isプライム5isプライム7isプライム9isプライム11isプライム13isプライム15isプライム
追加された 著者 designersvsoft,
あなたはあなたのプログラムが何をすべきか、何をしているのかを省いたのです...
追加された 著者 animuson,

5 答え

これを試して:

        <?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 "
" . $i." is prime"; } ?>

Edit Updated the code to take care of the "2"

2
追加された
実際には...私は、ループがそれらを通過する場合、これが数字> = 2で、0と1の両方が素数として表示されることに注意したいと思いました。これは、負の数で始まる場合に発生します
追加された 著者 annonymously,
ループはn-1または1で停止しますが、2から開始するため
追加された 著者 annonymously,
すばらしいです。ありがとう。今はうまくいきます。 2も素数です。なぜ結果はそれを示していないのですか?
追加された 著者 designersvsoft,
それは完全に機能しています。あなたの努力のためにありがとうございます。
追加された 著者 designersvsoft,
ええ。 :)私はコードを更新し、それが今動作するかどうかを確認してください。
追加された 著者 Akhilesh B Chandran,
それを聞いてうれしい:)あなたに幸運を祈ります。
追加された 著者 Akhilesh B Chandran,

基本的にこれを呼び出すことで、ループが最初に実行されたときにループを壊しています:

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

それは何があっても壊れます。あなたは最後の休憩を取る必要があります。

0
追加された
ああ、あなたが正しいですが、論理と答えはまだ動作します
追加された 著者 annonymously,
技術的には、 else は大括弧を使いませんので、2番目の改行は条件付きではありません。ですから、実際には、休憩はちょうど常にと呼ばれる期間です。
追加された 著者 animuson,

私はあなたのsecodループが間違っていると思います。

for($i=2; $i<=$n; $i++) {
   echo "
"; for($j=2; $j<=$i-1; $j++) { ...

$ jの最初の値は2です。そして、初めて$ iの最初の値は2です。今、2番目のループコードを見てください。 これは最初のようになります:

for($j=2; $j<=2-1; $j++) ...//for($j=2; $j<=1; $j++)

And this condition is not valid at all: 2<=1

0
追加された

さて、あなたのコードは分かりにくいものです。一見すると、それは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.";
0
追加された
コードに構文エラーがあります
追加された 著者 Mohit Bumb,
$ n = 15後にセミコロンが間違っていた
追加された 著者 Mohit Bumb,
<?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;
    }
}
0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com