В прошлом посте мы закончили следующей программой,

В этой статье мы узнаем об условных операторах, а затем создадим простую проверку простых чисел.

Условные операторы
Условный оператор — это оператор, который принимает решение о том, следует ли запускать фрагмент кода. В большинстве языков мы делаем это с помощью оператора if. Синтаксис оператора if следующий:
if(‹boolean value›){}else{}
позволяет создать простую программу и посмотреть, как она работает. Удалите все, что мы сделали в прошлый раз, чтобы у вас был пустой основной метод. Затем внутри основного метода напишите следующий код:
int i = 1;
if(1 == i){
System.out.println("1 равно" + i );
}else{
System.out.println("1 не равно" + i);
}

Когда вы запускаете программу, мы видим, что она выводит «1 равно 1». Попробуйте изменить i на другое число.

Давайте рассмотрим этот код, чтобы понять, как он работает.
if(1 == i) — это говорит о том, что если число 1 равно i, выполните следующий код. Двойное равенство используется для сравнения, в отличие от одиночного знака равенства, который присваивает значение переменной, как мы видели. Если вы забудете двойное равенство в операторах if, это может вызвать много проблем.
else - говорит о том, что если число 1 не равно i, то вместо этого запустите этот код.

Теперь, когда мы узнали об операторах if, давайте попробуем создать программу проверки простых чисел. Что он будет делать, так это проверять, является ли данное число простым или нет. Сначала удалите все, что мы только что сделали. Давайте начнем с создания некоторых переменных, мы создадим целое число для хранения числа, которое мы хотим проверить, и логическое значение для хранения, является ли оно простым или нет.
int number = 20;
boolean isPrime = true;

теперь давайте подумаем, что такое простое число, простое число делится только на 1 и само на себя. Это означает, что для проверки того, является ли число простым, мы можем посмотреть, делится ли число на какие-либо числа, меньшие его. Прежде чем мы это сделаем, как мы узнаем, делится ли число на другое число? хорошо, если мы разделим x на y, то мы узнаем, делится ли x на y, если нет остатка. Способ нахождения остатка от деления называется модулем и обозначается символом «%» в программировании. Тогда попробуем это реализовать.
for(int i = 2; i ‹ число; i++){
if(number %i == 0){
isPrime = false;
>
}

Наконец, давайте распечатаем, является ли число простым или нет,
if(isPrime == true){
System.out.println(число + «является простым»);
}else{
System.out.println(число + «не простое число»);
}

Если мы сложим все это вместе, то получим вот это,

Если мы запустим программу, мы получим следующий вывод.

Давайте попробуем сделать эту программу еще лучше. Прежде всего, нам не нужно перебирать все числа меньше нашего числа. Если мы возьмем 20 в качестве нашего примера, начиная с 2, 2 * 10 = 20, 3, 4 * 5 = 20, 5 * 4 = 20, 6, 7, 8, 9, 10 * 2 = 20. Нам не нужно проверьте любые другие числа, потому что мы знаем, что ни одно из них не будет равняться 20, например, 11 * 2 = 22, что больше 20… поэтому, если 11 * 2 больше 20, то будет 11 * 3 и т. д., и если это больше, чем 12 * 2 определенно есть. Другими словами, нам нужно проверить только половину чисел. Однако мы можем сделать еще лучше, проверяя только числа, меньшие квадратного корня из нашего числа. Позвольте мне объяснить, возьмем 9 в качестве примера, квадратный корень из 9 равен 3. Если мы проверяем только числа, меньшие или равные 3, 2 не входит в 9, 3 входит в 9, 4 не входит, 5 не входит, 6 не входит , 7 нельзя, 8 нельзя. Давайте попробуем с другим числом, возьмем 16. Квадратный корень из 16 равен 4. 2 входит в 16, 3 не входит, 4 входит, 5 не входит, 6 не входит, 7 не входит, 8 не входит... но мы уже знали это, потому что мы уже проверено 2 и 2 * 8 равно 16, 9 нет и т. д. Это работает с любым числом и значительно сокращает количество проверок, которые мы делаем, чтобы выяснить, является ли число простым. Мы реализуем это следующим образом: вместо
for(int i = 2; i ‹ number; i++){
мы хотим сделать
for(int i = 2; i ‹= Math.sqrt(number); i++){
Math.sqrt — это функция, Math — это класс в Java, который содержит множество математических функций, а sqrt — это функция для нахождения квадратного корня из числа.
после этого наш код должен выглядеть так

и если мы запустим его,

тот же результат, отлично. Есть еще один способ улучшить эту функцию. На данный момент мы перебираем все числа, которые нам нужны, и если они входят в число, которое мы проверяем, мы снова зацикливаемся, и если число не входит, мы также снова зацикливаемся. Проблема в том, что если число входит в число, которое мы проверяем, то мы знаем, что оно не простое… нам не нужно продолжать цикл, потому что это пустая трата времени. Чтобы исправить это, после
isPrime = false;
мы хотим поставить,
break;
ключевое слово break прерывает программу из цикла, что именно то, что мы хотим . ваш код теперь должен выглядеть так,

и снова, если мы запустим его, мы получим тот же результат.

Это подводит нас к концу сегодняшней статьи, мы узнали об операторах if, ключевом слове break и написали программу для проверки, является ли число простым или нет. В следующей статье мы будем опираться на это и узнаем о функциях. Я призываю вас поиграть с вашей новой программой и попробовать разные числа, чтобы увидеть, являются ли они простыми, в частности, попробуйте проверить некоторые очень большие числа, что вы заметите? в любом случае, как всегда, если вам понравилась эта статья, пожалуйста, хлопните в ладоши и не стесняйтесь следовать за мной тоже :) если у вас есть какие-либо вопросы, не стесняйтесь публиковать их в этой статье, и я свяжусь с вами как можно скорее.