Почему это простое число работает так?

#java

#java

Вопрос:

Итак, я пытаюсь понять, как создать программу для простых чисел, теперь я знаю, как проверить простое число, поэтому я попытался использовать его в свободном стиле, но, похоже, программирование требует больше ограничений, чем обычно, для создания простых чисел до 100. Я перепробовал много способов и следовал многим методам, многие из них кажутся сложными. Но эта программа здесь кажется очень простой для понимания, но у меня все еще возникают проблемы с пониманием назначения логической переменной?

  public static void main(String[] args) {

        for (int  i = 2; i <=100; i   ) {
            boolean primeNum = true;

            for (int j = 2; j <i; j  ) {

                if (i%j == 0) {
                    primeNum = false;
                    break;
                }
            }
            if (primeNum) {
                System.out.println(i);
            }
        }

    }
  

Комментарии:

1. primeNum имеет значение false, если число не является простым, т. Е. Имеет делитель.

2. Эта программа неэффективна. Заменить for(int j = 2; j <i; j ) на for(int j = 2; j <= Math.sqrt(i); j ) . Проверьте en.wikipedia.org/wiki/Primality_test

Ответ №1:

Что он делает, так это делает мод на каждое число меньше текущего. Если модульное значение равно 0, то текущее число можно разделить, следовательно, оно не является простым числом.

boolean Флаг меняется всякий раз, когда число может быть разделено на число, отличное от 1 и самого себя. Если флаг true установлен, то никакого деления не происходит, и это простое число должно быть распечатано, в противном случае ничего не печатается.

Ответ №2:

Похоже, цель primeNum — «сохранить», является ли оно простым, а затем распечатать его. Мы узнаем, является ли оно простым, только после того, как пройдемся по всем делителям (индекс j)