Как работает этот код с отображением простых чисел?

let n = 10;
 
nextPrime:
for (let i = 2; i <= n; i++) { // Для всех i...
 
  for (let j = 2; j < i; j++) { // проверить, делится ли число..
    if (i % j == 0) continue nextPrime; // не подходит, берём следующее
  }
 
  alert( i ); // простое число
}


Как работает этот код?
В каком порядке какие действия выполняются?
Мне непонятно, почему этот код выводит 2, если остаток от деления 2 на 2 равен 0..
А по условию там, где остаток от деления равен 0 выводится не должно ничего.
Правильно я понимаю, что первый цикл - это 2/2 = 0, где 0 - остаток от деления.
Затем 3/2 = 1, где 1 - остаток от деления.
Затем 4/3, остаток от деления 1.

И т.д.

Почему тогда так же и 4 не выводится?

Спасибо большое!
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
@GrayHorse
Мне непонятно, почему этот код выводит 2


На первой итерации 2 < 2 === false, и второй цикл просто пропускается.
Поэтому 2 и выводится.

---

Напиши отдельно функцию для проверки числа:
function isPrime(number) {
  // ...
  return true; // false
}


И вызывае ее в цикле.
const max = 10;
for (let i = 0; i <= max; i++) {
  if (isPrime(i)) {
    alert(i);
  }
}


Hint: https://stackoverflow.com/questions/40200089/numbe...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы