2016-07-31 14 views
-2
public class FindPrimes { 
    public static void main(String[] args) { 
     int Number_of_prime = 50; 
     int number_of_final = 10; 
     int count = 0; 
     int number = 2; 
     boolean isPrime = true; 

     while (count < Number_of_prime) { 
      for (int divisor = 2; divisor <= number/2; divisor++) { 
       if (number % divisor == 0) { 
        isPrime = false; 
        break; 
       } 
      } 

      if (isPrime) { 
       count++; 
       if (count % number_of_final == 0) 
        System.out.println(number); 
       else 
        System.out.print(number + " "); 
      } 
      number++; 
     } 
    } 
} 

プログラムは最初の50個の素数を見つける必要があります。 をwhileループ(上記の例)の外に宣言すると、素数2と3しか得られませんが、をwhileループ内に宣言すると、50個の素数がすべて得られます。このwhileループの内側と外側のブール値を宣言するとどうなるのですか?

どうしてですか?

+1

あなたが 'while'ループの中で' isPrime'を宣言していることがわかります。 –

+2

最初の50プライムを取得している限り正しいです。どうしましたか? – SMA

+0

私は質問を再編集します。私はブール値を外側に宣言しますが、ループは2と3になります。 – devilhitmanz

答えて

1

私はあなたが正しい答えを得ていると仮定していますが、どのように/なぜそれが正しいのかわかりません。

isPrimewhileの外部に宣言されていません。どうして?ループ内で素数が見つからない場合は、isPrimefalseに設定します。もう一度trueにリセットすることはありません。したがって、非素数の後に続く任意の数は、自動的に非素数になります。

isPrimewhileの中で宣言します。どうして?素数または非素数が見つかるたびに、isPrimeを元の値に戻し、それに応じて後続のすべての数値を素数として評価することができます。

まだ理解していない場合は、それを試してみてください。

希望に役立ちます。

+0

私は今それを得る。ありがとう。 – devilhitmanz

関連する問題