За последние 24 часа нас посетили 21084 программиста и 1109 роботов. Сейчас ищут 442 программиста ...

Оператор continue

Тема в разделе "PHP для новичков", создана пользователем SaltyBrain, 5 июл 2020.

  1. SaltyBrain

    SaltyBrain Новичок

    С нами с:
    5 июл 2020
    Сообщения:
    2
    Симпатии:
    0
    Добрый день, есть задачка:
    "Используя циклы и условия, вывести на экран все простые числа, находящиеся в диапазоне от 1 до 100"

    Нашел на просторах решение, но не могу понять, как здесь работает continue, какие итерации он пропускает

    PHP:
    1. for ($c = 1; $c <= 100; $c++) {
    2.     for($i = 2; $i < $c; $i++) {
    3.         if ($c % $i == 0) continue 2;
    4.     }
    5.     echo "$c ";
    6. }
    можете наглядно расписать?
     
    #1 SaltyBrain, 5 июл 2020
    Последнее редактирование модератором: 5 июл 2020
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  3. SaltyBrain

    SaltyBrain Новичок

    С нами с:
    5 июл 2020
    Сообщения:
    2
    Симпатии:
    0
    Это я понимаю, мы смотрим числа, где деление по модулю даёт 0, то есть по условию подходит весь ряд 1..100, но, при добавлении оператора "continue 2", остаётся только ряд простых чисел, читал уже справочные материалы, но никак не могу это визуализировать в голове...
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    continue 2 - это такая конструкция, которая позволяет сразу перейти к следующей итерации внешнего цикла.

    PHP:
    1. for ($c = 1; $c <= 100; $c++) { // Уровень А
    2.     for($i = 2; $i < $c; $i++) { // Уровень Б
    3.         /* Просто continue перешло бы к следующей итерации уровня Б, а continue 2 - сразу же переходит к следующей итерации на уровне А */
    4.         /* А если б над уровнем А был ещё один уровень, скажем, 0, то к его следующей итерации можно было бы перейти с помощью continue 3; */
    5.         if ($c % $i == 0) continue 2;
    6.     }
    7.     echo "$c ";
    8. }
     
    denis01 и SaltyBrain нравится это.