2

入力として整数を受け取り、入力された整数が素数かどうかを示すメッセージを出力するプログラムを作成しています。私が使用しているアルゴリズムは次のとおりです... Require: n>0, Require: isPrime <- true, for i=2 to sqrt(n) do , if n%i=0 then isPrime <- false end if and end for Then 数値が素数かどうかを出力します。これまでのコードは次のとおりです。コードが機能しておらず、問題を見つけることができません。

     public static void main(String[] args) {
    Scanner kb = new Scanner(System.in);
    int n;
    System.out.println("Input a positive integer");
    n = kb.nextInt();

        while (n>0){
            boolean isPrime = true;
            for (int i =2; i <= n/2;i++){
                if(n % i == 0){
                    isPrime = false;
                    break;
                }
            }
            if (isPrime = true){
                System.out.println("The integer, " + n + ", is a prime");
                break;
            }
            else{
                System.out.println("The integer, " + n + ", is not a prime");
                break;
            }
        }
    }
}

誰かが助けてくれたらありがたいです、ありがとう!

4

2 に答える 2

8

問題は次の行にあります。

if (isPrime = true){

と比較するのではなく代入を行ったtrueので、ステートメントは常にtrueです。

はすでに である==ため、ブール値を比較するために使用します。isPrimeboolean

if (isPrime){
于 2013-09-05T00:14:23.157 に答える
1

テキストでは、実装しようとしているアルゴリズムが平方根までの整数をチェックしていると言ってnいますが、コードはずっと進んでいますn/2(for ループを参照)。

現在のコードが機能しない理由は、代入操作であり、2 つの等号をif (isPrime = true)比較する必要があるためです。if (isPrime == true)

于 2013-09-05T00:18:29.420 に答える