2016-11-19 9 views
-2

初心者はこちらです。私は1から100までの素数を抽出するプログラムを持っています。以下のコードはコンパイルされますが、解釈すると空白の出力が得られます。Javaブロックには何が欠けていますか?

しかし、ネストされたfor-block(2番目のfor-block)で中括弧のペアを省略すると、正しい出力が得られます。

これもC++で試してみましたが、問題は同じです。私はここに何かを逃していますか前もって感謝します。

public class PrimeNumbers { 
    public static void main (String args[]) { 
     int i, j; 

     for(i=2;i<=100;i++) { 

      for(j=2;j<=(i/j);j++) { 
       if ((i%j == 0)) { 
        break; 
       } 

       if(j > (i/j)) { 
        System.out.println(i); 
       } 
      }        
     } 
    } 
} 

そしてここでは、C++での私のコードですが、問題は、あなたの場合は第二の文if(j > (i/j))を使用してループのための第二for(j=2;j<=(i/j);j++)競合の状態のためのブロック第二

#include <iostream> 
using namespace std; 

int main() { 
    int i, j; 
    for(i=2;i<=100;i++) { 
     for(j=2;j<=(i/j);j++) { 
      if(!(i%j)) 
       break; 
      if(j > (i/j)) 
       cout << i; 
     } 
    } 
    return 0; 
} 
+0

"this"をC++で試した場合、コードはどこですか? –

答えて

-1

ここでは、2と100の間の素数を調べる方法を教えてください。

public class PrimeNumbers { 

public static void main(String args[]) { 
    int i, j; 

    for (i = 2; i <= 100; i++) { 
     boolean prime = true; 
     for (j = 2; j < i; j++) { 
      if (i % j == 0) { 
       prime = false; 
       j=i; 
      } 
     } 
     if (prime) { 
      System.out.println(i + " is prime"); 
     } 
    } 
} 

コードに関して、2番目の前にネストされたforループを閉じます。 次のようにコードを編集してください:

public class PrimeNumbers { 

public static void main(String args[]) { 
    int i, j; 

    for (i = 2; i <= 100; i++) { 

     for (j = 2; j <= (i/j); j++) { 
      if ((i % j == 0)) { 
       break; 
      } 
     } 

     if (j > (i/j)) { 
      System.out.println(i); 
     } 
    } 
} 
} 
+0

それは私が行方不明だからです。私の2番目のIfブロックは1番目のForブロックに属していなければなりません。ありがとう、これは私の質問に答える。 – paulllt

0

と同じです。 j <=(i/j)の場合はforループを終了しますが、印刷するのはj > (i/j)の場合のみです。このことを考えると、System.out.printlnに届かないと、決してそれに入ることはありません。

関連する問題