НИПОНЯТНАЯ ПРОСТАЯ ПРОГРАМмА

Тема в разделе "PHP программирование", создана пользователем typak, 21 сен 2010.

  1. typak

    typak Гость

    Тут неделю как пхп учу дошол до циклов все более менее понятно а от одна програмка никак немогу разобрать ка она работает.
    ПРОГРАММА ДЛЯ НАХОЖДЕНИЯ ПРОСТЫХ ЧИСЕЛ
    КОД ПРОГРАММЫ:
    Код (Text):
    <?php
    echo "<h1>Программа нахождения простых чисел</h1><p>";
    $flag = NULL;
    for ($i = 2; $i < 100; $i++)
    {
    for ($j = 2; $j < $i; $j++)
    {
    if (($i%$j) !=0 ) continue;
    else
    {
    $flag = true;
    break;
    }
    }
    if (!$flag) echo $i." ";
    $flag = false;
    }
    ?>
    В результате выводит:
    Программа нахождения простых чисел
    2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

    Все работает правильно так как и должно без ошибок тока как? :mellow:
    Щас будем разбиратся:


    круг 1:

    i =2 i<100 да //выполняетса подцикл
    j = 2 j<i нет // выход с цыкла переход к третей части
    if !0 -> true вивод i=2 // с первой двойкой понятно вроде

    круг 2: // i = 3, а j=2 неизменилось так как вроде условие внутреннего цикла невыполнилось
    i = 3 i<100 да // переходим к подциклу к оператору 1
    j = 2 j<i да // переходим к первому оператору подцикла
    if (3%2 !=0)-> TRUE->continue// конец текущей итерации подцикла начало новой j прибавило 1 j=3
    j = 3 j<i = 3 < 3 -> false // выход из подцикла-переход к следующему оператору ко второму оператору внешнего цикла
    if !0 -> true вивод i=3 // Вывелась вроде тройка

    ИДЕМ ДАЛЬШЕ ЩАС ОШИБКА нифакт шо ее раньше небыло
    круг 3: // i стало 4, J = 3
    i= 4 i<100 да // переход к подциклу (оператору 1)
    j=3 j<i да //переход к первому оператору подцикла
    if (4%3 !=0)-> TRUE->continue// конец текущей итерации подцикла начало новой j прибавило 1 j=4
    j = 4 j<i = 3 < 3 -> false // выход из подцикла-переход к следующему оператору ко второму оператору внешнего цикла
    if !0 -> true вивод i=4 // Вывелась вроде четверка


    так от по моим рассуждением получаетса что оно выведет все цифры подряд 1 2 3 4 5 ... 100

    НАСАМОМ ЖЕ ДЕЛЕ АНА ВЫВОДИТ СЛЕДУЩИЕ ЦИФРЫ:
    2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97


    код програмы правельный все работает правильно тока я немогу догнать как она так выводит. кто шарит мож опишет или намикнет где я ошибся :) :) :)
    ВЫШКА У МЕНЯ ПЯТИФАН БЫЛА НАМИКНИТЕ РАЗБЕРУСЬ ;)
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    на самом деле:
    круг 3: // i стало 4, J = 2 т.к. for ($j = 2, ...)
    if (4%2 !=0)-> false, установка $flag = true и выход из внутреннего цикла. 4 не печатается
     
  3. typak

    typak Гость

    ААААА ТЕРЬ ВСЕ ЯСНО:

    Я просто считак шо J изменилось и када мы входим и на новый цикл

    вообщем помоему ясно где я ошибался:
    внешний цикл неизменяется i растет
    внутренний цикл при каждой новой итерации i++ остаетса равным j=2 начинаетса поновой так как мы вышли из цикла

    ща попробуем расписать поновому:

    круг 3 // i=4: j=2 j новый цикл тошо мы из него вышли в прошлий раз!!!
    i=4 i>100 да // первый оператор
    j=2 j<i да // первый оператор подцикла
    if i%j !=o -> false // перходим к камандам else
    flaf= true и break // вообщем выход с подцикла
    идем на вывод вообщем ничо невыводитса так как !true = false //опа норм 4 невывидась как и должно быть идем дальше ....

    круг 4 //i=5; j=2
    i=4 i>100 да // первый оператор
    j=2 j<i да // первый оператор подцикла
    if i%j !=0 -> true continue //следущая итерация
    j = 3 j < i да //
    if i%j !=0 -> true; continue //следущая итерация
    j = 4 и опять continue //следущая итерация
    J = 5 j < i нет //прерываем внутренний цикл
    выводим 5 // О_О терь все работает так как и должно так как и работало

    Спасибо OKEN помог понять где я нитак расписывал
     
  4. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.470
    Симпатии:
    27
    Граммар наци негодуе(
     
Загрузка...

Поделиться этой страницей