0 голосов
спросил от в категории Java
В начале ваша переменная инициализируется:
int i=2

Затем каждая итерация проверяется:
i<=num

После каждой итерации, пока условие не будет выполнено, i увеличивается:
i++


Простое число - это число, не делящееся целыми числами, кроме 1 и само . Итак, чтобы проверить простое число, ваше условие должно быть:
i<num


Обратите внимание, что в вашем цикле вам не нужно присваивать isPrime каждый раз true. Вы можете упростить его:
boolean isPrime=true; // this code is to illustrates prime no test using for loop for (int i=2; i<num;i++) {     if (num%i==0 ) {isPrime=false; break;} } 

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
Цитата:
Я не могу понять, почему нам нужно это утверждение (i lt;=num/i ).

Это конечное условие цикла.
Чтобы узнать, что происходит, добавьте этот код как первую строку в цикле
>
System.out.println("Divisor : "+i); System.out.println("End Condition : "+(num/i));

и запустите программу с простыми числами или квадратом и посмотрите, какие аналитики проверяются.
Другое решение - следить за вашей программой при ее выполнении с помощью отладчика.
-----
Ваш код не ведет себя так, как вы ожидаете, и вы не понимаете, почему!

br> Существует почти универсальное решение: шаг за шагом запускайте свой код на отладчике, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача сравнить с тем, что он должен do.
В отладчике нет волшебства, он не знает, что вы должны делать, он не находит ошибок, он просто помогает вам показать вам, что происходит. Когда код не делает то, что ожидается, вы близки к ошибке.
Чтобы узнать, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет выполнять строки 1 на 1 и проверять переменные по мере их выполнения.
System.out.println("Divisor : "+i); System.out.println("End Condition : "+(num/i));
# [#^ #]
#http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html # [#^ #] < br> #https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html # [#^ #]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача сравнить его с тем, что он должен делать.
0 голосов
ответил от
Цикл для довольно прост - он состоит из четырех частей:
for (a; b; c) d
Где:
a инициализирует цикл и настраивается для запуска. Это выполняется один раз, и один раз только каждый раз, когда код достигает кода для
b , выполняется непосредственно перед телом кода цикла ( d ), и если он оценивает true , то тело выполняется. Если это не так, то цикл завершен.
c запускается сразу же после того, как тело кода цикла ( d ) выполнено настроен для следующей итерации.
d - это тело цикла, и это код, который выполняется один раз при каждом раунде цикла.
> Итак, если a было
int i = 0
b было
i < 3
c было
i++
, тогда тело цикла выполнило бы три раза, один раз для i=0; то i=1; затем, наконец, для i=2
И вы получите a Установите i в 0
b Является ли i lt; 3? Да - продолжить с циклом
d Выполнить тело
c Добавить один в i
<код > b Является ли i lt; 3? Да - продолжить с циклом
d Выполнить тело
c Добавить один в i
<код > b Является ли i lt; 3? Да - продолжить с циклом
d Выполнить тело
c Добавить один в i
<код > b Является ли i lt; 3? Нет - цикл выхода.

В вашем случае c является i lt; num , который гарантирует, что вы закончите тест, когда значение достигнет числа («<код> i lt;=num » не поможет, потому что по определению все числа делятся сами по себе )

Что вы можете использовать i lt;=num/i Подумайте об этом с примером.
Предположим, num равно 41, и ваша тестовая последовательность:
i    num / i 2         20 3         13 4         10 5         8 6         6 7         5 
Как только вы достигли 6 x 6, нет никакого смысла в дальнейшем тестировании: потому что по определению вы уже проверили на делимость на 5, 4, 3 и 2!

Категории

Добро пожаловать на сайт DraftingCode Q&A (ИТ ответы), где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...