Цикл: for (j = 2; j < i; j++)
, в чем заключается j<i
. Как это понять? Откуда мы придумали j
?
public class Za {
public static void main(String args[]) {
int i, j; // Объявление переменных i и j.
boolean isprime; // Объявление переменной isprime
for (i = 2; i < 100; i++) { // Объявление цикла
isprime = true; //Вопрос: Зачем здесь это?
for (j = 2; j < i; j++) /* Не ясно объявление цикла? Ведь i=2,
а тут опять пишем j=2 и еще пишем j<i (как это возможно если Они оба
равны 2). Вообще зачем, что написали внутри цикла */
if ((i % j) == 0)
isprime = false; // Непонятно, почему мы делим по модулю и
// если без остатка вернется false
if (isprime) // Не понятно эта управляющая конструкция
System.out.println(i + " is prime.");
}
}
}
// Почему создается это:
isprime = true;
// Проверить, делится ли число без остатка.
for (j = 2; j < i; j++)
// Если число делится без остатка, оно простое
if ((i % j) == 0)
isprime = false;
Дописал пояснения комментариями в коде:
for (i = 2; i < 100; i++) { // перебираем все числа от двух до ста
isprime = true; // если не доказано обратное - число простое
for (j = 2; j < i; j++) // перебираем все числа от двух до текущего числа (хотя достаточно до Sqrt(i))
if ((i % j) == 0)
isprime = false; // если остаток равен нулю, то текущее число i делится нацело на делитель j и простым быть не может. После этого должен стоять break, т.к. дальше искать делители бессмісленно
if (isprime) // если не было найдено ни одного делителя, то число простое
System.out.println(i + " is prime.");
}
Это алгоритм поиска простых чисел до 100, второй цикл это все числа меньше i-го для проверки(поэтому и j < i), а isprime - это обычный флаг, который в итоге проверяется для отображения числа в консоль.
// и это не ясно почему мы так сделали? ведь i=2 а тут опять пишем j=2
У вас i=2
только в первой итерации цикла по i, во всех последующих нет.
// и это не ясно, почему мы делим по модулю и говорим если без остатка то ошибка ( false)
Опять неверно, если делится без остатка то присваиваем булевой переменной значение false
, а не ошибка.
А вообще:
Домашние задания надо выполнять самостоятельно. Если у вас возник вопрос по домашнему заданию, не просите его сделать за вас. Задайте конкретный вопрос о проблеме, которую вы не можете решить. Программирование — это то, в чём надо разбираться самому, либо не заниматься им вовсе. Если для вас программирование — лишний предмет в учебной программе, есть сайты и люди на этих сайтах, выполняющие задания за материальное вознаграждение. Здесь предлагать выполнить работу за вас и наоборот — моветон.
Смысл в том, что это циклы, и ты говоришь, что выполняй внутренний цикл пока j < i, как только это неравенство перестанет выполняться то выйди из цикла. Это имеет смысл так как следующий раз i будет равно 3 4 5 и т.д. до 10
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как в javascript можно отследить изменение свойства объекта и при изменении вызвать callBack? Например: objprop = true; При изменении obj
В методе sortProductsByPrice (sortOrder) сортировка не работает, когда я удаляю или добавляю продукты в dom при помощи слушателей(buttAddaddEventListener,buttDelete