2016-11-19 2 views
-2

новичок здесь. У меня есть программа, которая извлекает простые числа из чисел 1-100. Приведенный ниже код компилируется, но при интерпретации дает пустой результат.Что мне недостает в моих блоках Java?

Однако, когда я опускаю пару фигурных скобок во вложенном блоке (2-й для-блока), он даст правильный результат.

Я также пробовал это на 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++, вопрос же с 2-го по-блока

#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

Если вы пробовали «это» в C++, то где ваш код? –

ответ

-1

Ok. Вот как вы можете проверить простых чисел между 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"); 
     } 
    } 
} 

Что касается кода, закройте вложенный цикл, прежде чем второй, если. Так редактировать код, как показано ниже:

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

Так вот, где мне не хватает. Мой второй If-блок должен принадлежать 1-му For-block. Спасибо, это отвечает на мой вопрос. – paulllt

0

состояние вашей второй цикл for(j=2;j<=(i/j);j++) конфликтов с вашим вторым, если заявление if(j > (i/j)). Вы выходите из цикла for, когда j <=(i/j), но вы печатаете только, когда j > (i/j). Учитывая это, вы никогда не войдете, если и никогда не достигнете System.out.println.