Этот урок набрал набрал достаточно большое количество комментариев и дальнейшее его комментирование отключено. Если вы хотели убедиться в правильности выполнения ДЗ или у вас возник вопрос по уроку, посмотрите ранее добавленные комментарии, кликнув по кнопке ниже. Скорее всего вы найдете там то, что искали. Если это не помогло - задайте вопрос в чате в телеграме - https://t.me/php_zone
trialex3 05.11.2017 в 00:33
<?php
for ($x = 1000;$x<100000;$x++) {
    if ($x % 17 == 0) {
        echo "$x, ";
    }
}
?>
ivashkevich 05.11.2017 в 06:54

Хорошо) А что со вторым заданием?

SBTesla 05.11.2017 в 11:33
$prevPrev = 0;
$prev = 1;

echo $prevPrev.'<br>';
echo $prev.'<br>'
for ($x = 1; $x <= 100000;) {
    $x        = $prev + $prevPrev;
    $prevPrev = $prev;
    $prev     = $x;

    echo $x . '<br>';
}
ivashkevich 11.11.2017 в 13:54

Хорошее решение, только отступы надо лишние убрать.

[email protected] 09.05.2018 в 08:39

В вышеуказанном варианте есть недоработка - вывод последнего числа фибоначчи (121393) происходит перед его проверкой на условия цикла (<= 100000). Вот мой вариант

<?php
    $arr = [0, 1];
    $prev = 0;

    for ($i = 1; $i <= 100000; ){

        $i += $prev;
        $prev = $i - $prev;

        if ($i <= 100000) {
            $arr [] = $i;
        }
    }
    var_dump($arr);

Если есть вариант, как убрать проверку перед включением числа фибоначчи в массив - подскажите)

ivashkevich 09.05.2018 в 08:57

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

Вариант есть, но для его реализации нужно ознакомиться с оператором break из следующего урока.

Лучше будет убрать условие внутри for(...), и оставить его только внутри тела цикла, как у Вас. Только нужно будет проверять, что если текущее получившееся число стало больше верхнего диапазона, то нужно цикл прервать:

    $arr = [0, 1];
    $prev = 0;

    for ($i = 1;;){
        $i += $prev;
        $prev = $i - $prev;

        if ($i > 100000) {
            break;
        }

        $arr [] = $i;
    }
WarLikeLaux 10.11.2017 в 18:02

enter image description here

ivashkevich 11.11.2017 в 13:53

Тут всё верно.

WarLikeLaux 10.11.2017 в 18:30
<?php
$temp = array(0,1);
echo $temp[0] . ' ' . $temp[1] . ' ';
for ($i = 1; $i < 100000 ; $i++) {
    if ($i == $temp[0] + $temp[1]) {
        $temp[0] = $temp[1];
        $temp[1] = $i;
        echo $i . ' ';
    }
}
ivashkevich 11.11.2017 в 05:16

Вариант рабочий, засчитываю. Но не самый оптимальный - в вашем варианте $i увеличивается на единицу и происходит очень много лишних действий. Вместо этого лучше в $i присваивать сумму двух предыдущих значений. Как здесь.

serb2017 15.11.2017 в 16:35
<?php
//* числа Фиббоначи

$i1 = 100000;
$arrayF [0] = 0;
$arrayF [1] = 1;
$arrayF [2] = 1;

for ($i = 1; $arrayF [$i] <= $i1; $i++) {
    $arrayF [$i + 1] = $arrayF [$i] + $arrayF[$i - 1];
    echo  'число Фиббоначчи  ' . $i . '=' . $arrayF [$i] . '<br>';
}
ivashkevich 18.11.2017 в 15:49

Отличное решение! Только уберите пробелы между названием массива и [].

И вот эту строку можно убрать:

$arrayF[2] = 1;

P.S. вы можете редактировать свой комментарий.

serb2017 15.11.2017 в 21:28
<?php
//* Числа кратные m
$n = 1;
$m = 17;
$i = 1000;
$i1 = 1000000;
for (; $i <= $i1; $i += $n) {
    if ($i % $m === 0) {
        $array1 [] = $i;
        $n = $m;
    }
}
foreach ($array1 as $i) {
    echo 'число  ' . $i . 'делится на   ' . $m . '=' . $i / $m;
    echo '<br>';
}
ivashkevich 18.11.2017 в 15:52

Хорошее решение! Исправьте кодстайл как я вам уже говорил и попробуйте дать более осмысленные имена переменным.

Andreo 16.01.2018 в 15:48
<?php
for ($x = 1000; $x <= 1000000; $x++) {
    if ($x % 17 == 0) {
        echo $x . '<br>';
    }
}

$arr = [0, 1];

for ($i = 0; $fib <= 100000; $i++) {
    $fib = $arr[$i] + $arr[$i + 1];
    $arr[] = $fib;
}
foreach ($arr as $fibon) {
    echo $fibon . '<br>';
}

Чет я по ходу намудрил... Зато сам пришел к этому, не глядя в комментарии других пользователей )
Только почему-то у меня выводится последнее лишнее число...

Добавил проверку в обработку массива ))

$arr = [0, 1];

for ($i = 0; $fib <= 100000; $i++) {
    $fib = $arr[$i] + $arr[$i + 1];
    $arr[] = $fib;
}
foreach ($arr as $fibon) {
    if ($fibon <= 100000) {
        echo $fibon . '<br>';
    }
}
ivashkevich 16.01.2018 в 17:02

Интересное решение, засчитываю) Но советую посмотреть в интернете другие реализации. Мне больше всего нравится вот это решение.

Lungren 06.02.2018 в 15:30
<?php
    for($i=1000; $i<1000000; $i++){
    if($i%17===0){
        echo $i;
        echo '';
        echo '<br/>';
    }
    }
?>
ivashkevich 07.02.2018 в 17:06

Стоит учитывать, что верхняя граница тоже может подходить под условия. Тогда правильнее будет условие

$i <= 1000000
DmitryGavrilov 09.04.2018 в 15:40
<?php

//найти числа фибоначи меньше 10000
//Числа Фибоначчи – это последовательность чисел, в которой первые два числа равны 0 и 1,
// а каждое последующее число равно сумме двух предыдущих чисел.

$fistCount = 0;
$secondCount = 1;

//выводим на экран 1 и 0, для того чтобы была наглядно видна последовательность
echo $fistCount . '<br>';
echo $secondCount . '<br>';
//цикл с условием начала от 1, но не больше 10000
for ($sumOfCount = 1; $sumOfCount <= 10000;) {

    // считаем сумму чисел яч1
    $sumOfCount = $fistCount + $secondCount;
    // второе значение становится первым яч2
    $fistCount = $secondCount;
    // сумма чисел становится вторым значением яч3
    $secondCount = $sumOfCount;

    //вывод результата из цикла
    echo $sumOfCount;
    echo '<br>';
}

?>
ivashkevich 09.04.2018 в 19:07

Отлично) Только стоит переименовать переменные. "Count" - это число чего-то. Просто "число" - это "number".

DmitryGavrilov 09.04.2018 в 20:31

Как скажете Сенсей!

Bizzzon 06.07.2019 в 16:24

Очень классное решение, сам не смог решить, начал читать комменты, и ваше решение самое простое и понятное)

DmitryGavrilov 09.04.2018 в 15:44
<?php
//попробуем вывести все числа от 1000 до 1000000 делимые на 17 без остатка
//в цикле задаем начальную переменную со значением 1000, второе условаие окончание цикла 1кк, и инкремент по
for ($i = 1000; $i < 1000000; $i++) {
    //проверочное условние - если переменная делится без остатка на 17 - то выводим переменную
    if ($i % 17 == 0) {
        echo $i;
        echo '<br>';
    }
}
?>
ivashkevich 09.04.2018 в 19:09

Лучше вот так, с проверкой типа:

$i % 17 === 0

А так - отличное ДЗ

DmitryGavrilov 09.04.2018 в 20:32

Понял, благодарю! А почему тождественная проверка лучше?

ivashkevich 09.04.2018 в 20:35

Так больше уверенности в том, что сравниваются одинаковые данные. Со временем поймёте)

1nSide 10.04.2018 в 14:23

1 задача

for($i = 1000; $i <= 1000000; $i++){
    if ($i % 17 === 0){
        echo $i;
        echo ' ';
    }
}
ivashkevich 10.04.2018 в 18:13

Гуд)

andropij 16.06.2018 в 14:51
<?php
$Fibonachi = 1;
$sim = 0;
for ($i = 0; $i < 100000; $i++) {
    if ($Fibonachi == $i) {
        $Fibonachi += $i;
    }
}
echo $Fibonachi;
ivashkevich 16.06.2018 в 18:29

Не работает

andropij 17.06.2018 в 12:06
<?php
$a = 100000;
$fibonachi = 1;
$array = [0, 1];
for ($i = 1; ; $i++) {
    if ($fibonachi > $a) {
        break;
    }
    $fibonachi += $array[$i - 1];
    array_push($array, $fibonachi);
}
unset($array[$i]);
var_dump($array);

Понял свои ошибки. Думал никто не ответит, но хорошо, что я ошибался. Спасибо, что поддерживаете проект.

ivashkevich 18.06.2018 в 04:56

Немного неправильно, должно начинаться на 0, 1, 1, 2... У Вас 0, 1, 2...
А проект жив)

Fox-24 13.08.2018 в 17:06

Спасибо за урок!

<?php

// Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка.

$minnum = 1000;
$maxnum = 1000000;

for (;$minnum <= $maxnum;$minnum++) {
    if ($minnum % 17 === 0) {
        echo $minnum . '</br>';
    }
}

/* Найдите числа Фибоначчи меньше 100000. Числа Фибоначчи – это последовательность чисел, в которой первые два числа равны 0 и 1,
а каждое последующее число равно сумме двух предыдущих чисел.
Должно получиться: 0, 1, 1, 2, 3, 5, 8 ... */

$num2 = 1;      //Задаем второе число
for ($num1 = 0;$num1 <= 100000;$num1 += $num2) {  // Задамем первое число, условивие при котором отобразяться все числа фибоначи меньше 100000 и выполняем первое сложение
    $num2 += $num1;                               // Второе сложение предыдущего чисоа с текущим

    echo $num1. ',' . $num2 . ',';                //Выводим оба числа в цикле.
}
ivashkevich 14.08.2018 в 20:25

Хорошо, но второй пример какой-то сложный. Непонятна логика того, что вычисляется именно сумма двух предыдущих. По идее для этого должна быть использована одна переменная, и ещё две переменные для хранения двух предыдущих чисел. Здесь же это не очевидно, хоть и работает.

Dilik 30.08.2018 в 18:29
for ($i = 1000; $i <= 100000; $i++) {
    if ($i % 17 == 0) {
        echo $i . '<br>';
    }
}
ivashkevich 01.09.2018 в 13:33

ок!

Dilik 31.08.2018 в 15:54
<?php
$arr = [0, 1];
$a = 0;
$b = 1;
for ($i = 0; $i <= 100; $i++) {
    if ($i === $a + $b) {
        $a = $b;
        $b = $i;
        $arr[] = $i;
    }
}
var_dump($arr);
ivashkevich 01.09.2018 в 13:34

Ок! Но можно быстрее, мы с Вами уже это обсуждали =)

artemjeka 07.09.2018 в 07:49
  1.    for ($i = 1000; $i <= 1000000; $i++) {
            if ($i % 17 == 0) {
                while ($i <= 1000000) {
                    echo $i . '<br />';
                    $i+=17; // экономия ресурсов
                }
                break;
            }
        }
  2. Сомневаюсь, что это нормальное решение:
        for ($a = 0, $b = 1, $i = 0; $a <= 100000 || $b <= 100000; $i++) {
            if ($a == 0) {
                echo $a.'<br />';
            }
            if ($a < $b) {
                $a = $a+$b;
                echo $a.'<br />';
            } elseif ($a >= $b) {
                $b = $a+$b;
                echo $b.'<br />';
            }
            if ($b == 1) {
                echo $b.'<br />';
            }
        }
ivashkevich 07.09.2018 в 09:02
  1. Лишний цикл while, можно просто убрать $i++ из скобок и делать его, если число не разделилось. А если разделилось, то можно уже +17 делать.
    За то, что вы в принципе задумались об оптимизации, ставлю вам большущий плюс.
  2. Ну да, что-то вы перемудрили тут. Нагуглите алгоритм нахождения чисел фибоначи, он проще, чем вы думаете. Ну или можете поискать более простое решение в комментах выше.
[email protected] 12.09.2018 в 16:24
<?php

$a = 0;
$b = 1;

for(;$a<=100000;)
{
    echo $a.'<br>';
    $b = $b + $a;
    $a = $b - $a;   
}
ivashkevich 22.09.2018 в 10:18

Отлично!

Art 06.10.2018 в 11:21
//==================================
$i = 1000;
while (($i % 17) != 0)
    $i++;

for (; $i < 1000000; $i += 17)
    echo '<br>' . $i;

//==================================
$pre = 0;
for ($fib = 1; $fib < 100000; $fib += $pre) {
    echo '<br>' . $pre;
    echo '<br>' . $fib;
    $pre += $fib;
}
ivashkevich 06.10.2018 в 14:35
  1. Сложно, подумайте над упрощением. Можно обойтись одним циклом.
  2. Всё хорошо.
Art 06.10.2018 в 15:57
//==================================
$i = 1000;
//Находим первое число больше 1000 которое делится на 17
//в данном случае после прохода цикла $i=1003
while (($i % 17) != 0)
    $i++;

//Выводим оставшиеся числа до 1000000, просто прибавляя к $i
//каждый раз значение 17
//кстати в коде выше не совсем правильно, наверное лучше ставить в цикле <=
//в данном примере это не имеет значения, но с другими делителями можно 
//недополучить последнее значение
for (; $i <= 1000000; $i += 17)
    echo '<br>' . $i;

//Можно одним циклом, но зачем проверять каждый раз делимость на 17, 
//если можно не проверять

//хотя может можно и не проверять, и одним циклом сделать, 
//но в голову ничего не приходит(
ivashkevich 07.10.2018 в 07:14

Хорошо, пусть будет с такой оптимизацией)

[email protected] 07.10.2018 в 21:52
$x = 0;
$y = 1;
echo $x;
for (; $z <= 100000; $z = $x + $y) {
    echo $z . ' ';
    $x = $y;
    $y = $z;
}
ivashkevich 08.10.2018 в 23:03

Хорошо

ilyaOrlov 15.10.2018 в 18:46

Имеет ли место такое решение второго задания?

<?php
$a = 0;
$b = 1;
$c = 0;
echo $a . ' ';
echo $b . ' ';
for (; $b < 100000; ) {
    $c = $a + $b;
    $a = $b;
    $b = $c;
    if ($b < 100000) {
        echo $b . ' ';
    }
}
ivashkevich 15.10.2018 в 23:08

Вполне норм)

CarfikDK 20.10.2018 в 21:27
<?php
$arr = [0,1];
for($i = 0; $r <10000; $i++ )
{
   if($i>1)
   {
       $arr[$i] = $arr[$i-2]+$arr[$i-1];
       $r = $arr[$i];
       echo $arr[$i] . ', ';
   }else
   {
       echo $arr[$i] . ', ';
   }
}
ivashkevich 21.10.2018 в 22:28

Скрипт выдает Notice-ы. Такое не засчитывается.

CarfikDK 22.10.2018 в 18:24

А что такое сам Notice? В плане перевод то заметка,но в этом случае что оно означает?

Вот что выводит у меня:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,

ivashkevich 23.10.2018 в 08:37

В коде внутри условия используется неопределенная переменная. Если у вас нет ошибок - нужно включить их вывод в php.ini.

CarfikDK 24.10.2018 в 19:44

Ну вот я переделал полностью, но не могу понять, у меня ошибки включены, ну и сама переменная была задана в цикле

<?php
$x1 = 0;
$x2 = 1;

for( ; $x1<=100000 ; )
{
echo $x1.', ';
    $x2 = $x2 + $x1;
    $x1 = $x2 - $x1;
}
ivashkevich 26.10.2018 в 08:43

Она у вас изначально не была определена, но использовалась в условии цикла.

for($i = 0; $r <10000; $i++ )

И откуда интерпретатор узнает на первом шаге, что это за $r? Она просто с потолка была взята.

Сейчас всё ок.

stokato 03.11.2018 в 20:56

Задачи в комменты писать, или можно прорешивать и у себя оставлять, спросил я решая уже до 16 урока)
Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка.

for ($i = 1000;$i <= 1000000;$i++) {
    if ($i % 17 === 0) {
        echo $i;
    }
}

Найдите числа Фибоначчи меньше 100000. Числа Фибоначчи – это последовательность чисел, в которой первые два числа равны 0 и 1, а каждое последующее число равно сумме двух предыдущих чисел.

for ($s = 0, $i = 1, $fib = 0; $fib < 100000; $s = $i, $i = $fib, $fib = $i + $s) {
    echo $fib . ' ';
}
ivashkevich 04.11.2018 в 00:26

Всё правильно, сюда домашку =)
Сделано на 5

virtual2018 20.11.2018 в 21:44
<?php
// все числа кратные 17 без остатка
for ($i = 1000; $i <= 1000000; $i++) {
    if (($i % 17) == 0) {
        echo '<br>' . $i;
    }
}
// фибоначчи от 0 до 1000000
$firstFibonacci = 0;
echo '<br>' . $firstFibonacci;
$secondFibonacci = 1;
echo '<br>' . $secondFibonacci;
for ($i = 1; $i < 1000000; $i = ($secondFibonacci + $firstFibonacci)) {
        $firstFibonacci = $secondFibonacci;
        $secondFibonacci = $i;
        echo '<br>' . $i;
}

да, спасибо, поторопился скопировать. Исправил.

ivashkevich 21.11.2018 в 21:21

Непонятно, для чего первый foreach.
$i % 17 - лучше явную проверку на 0.
Непонятно, для чего проверка if (($secondFibonacci + $firstFibonacci) == $i) ведь $i всегда будет равно сумме этих значений.

[email protected] 21.11.2018 в 23:24
for ( $i = 1000; $i <= 1000000;){
    if ( $i % 17 === 0){
        echo $i;
        echo '<br>';
        $i = $i + 17;
    }
    else
        $i++;
}
ivashkevich 22.11.2018 в 09:19

Хорошо, с оптимизацией)
После if и else всегда ставятся фигурные скобки, даже если одна строка - это стандарт в PHP.

Mike 28.11.2018 в 16:00
<?php
$x=0;
$y=1;
$fibonachi=[0, 1,];

for ($z=0; $z<100000; ) {
    $z=$x+$y;
    $fibonachi[]= $z;
    $x=$y;
    $y=$z;
}
var_dump($fibonachi);
ivashkevich 28.11.2018 в 22:46

Супер!

Bogdan 11.12.2018 в 16:54

Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка.

for ($numbers = 1000; $numbers < 1000000; $numbers++ ) {
    echo $numbers % 17 === 0 ? "$numbers<br>": "";
}

Найдите числа Фибоначчи меньше 100000. Числа Фибоначчи – это последовательность чисел, в которой первые два числа равны 0 и 1, а каждое последующее число равно сумме двух предыдущих чисел.
Должно получиться: 0, 1, 1, 2, 3, 5, 8 ...

for ($i = 1, $start = 0; $i < 100000; $i += $start) {
    echo "$start<br>$i<br>";
    $start += $i;
}
ivashkevich 11.12.2018 в 23:08

Хорошо

tigr 13.12.2018 в 18:16
<?php
$fib = [
    0,
    1
];

    for ($i=1;$i>0;) {
        $value = $fib[$i] + $fib[$i-1];
        if ($value < 100000) {
            $fib[] = $value;
            $i++;
        } else {
            $i = 0;
        }
    }
    foreach ($fib as $value) {
        echo $value . ", ";
    }
?>
ivashkevich 14.12.2018 в 10:36

В целом норм, но решение с переменной $i выглядит как костыль. В качестве условия остановки цикла можно использовать $value < 100000 и обойтись без переменной $i

tigr 15.12.2018 в 14:08
<?php
$fib[] = 0;
$value = 1;

    for ($i=1;$value < 100000;$i++) {
        $fib[] = $value;
        $value = $fib[$i] + $fib[$i-1];
    }

    foreach ($fib as $value) {
        echo $value . ", ";
    }
?>
ivashkevich 16.12.2018 в 10:28

Стало лучше :)

SashkoUkraine 22.01.2019 в 11:34
<?php

$startNumber = 1000;
$endNumber = 1000000;

for ($i = $startNumber; $i <= $endNumber; $i++) {

    if ($i % 17 == 0) {
        echo $i . "<br>";
    }
}
ivashkevich 23.01.2019 в 11:42

Норм!

excent63 23.01.2019 в 13:58

Доброго дня! Спасибо за урок.
Решение первого задания

<?php
for ($i = 1000; $i < 1000000; $i++){
    if ($i % 17 == 0){
        echo $i . ' ';
    }
}

А второе что то не дойдёт никак...

ivashkevich 23.01.2019 в 21:54

Ок. Подсмотрите в решения других учеников.

MrElektron 23.01.2019 в 19:51
<?php
$sum = [0, 1];
echo $sum[0] . '<br>';
echo $sum[1] . '<br>';
for ($i = 0; $i < 100000; $i++){
    $sum[] = $sum[$i] + $sum[$i+1];
    echo $sum[$i+2] . '<br>';
}

Вот блин, только после того как отправил, понял, что задание не совсем правильно сделано, то есть оно не подходит под условия задачи

ivashkevich 23.01.2019 в 21:56

Ну так поправьте)

Bugaga159 24.01.2019 в 23:52
function fibonachiNum(){
    $arr = [];
    $lastNum = 0;
    for($i=0; $i <1000; ){
        if($i == 0){
            $arr[] = $i;
            $i++;
        }else {
            $arr[] = $i;
            $prev = $i;
            $i += $lastNum;
            $lastNum = $prev;
        }
    }
    return $arr;
}
foreach (fibonachiNum() as $key => $value){
    echo $key+1 . ' - ' . $value . '<br>';
}

Надеюсь правильно решил или что то стоит переделать?

ivashkevich 25.01.2019 в 10:14

В целом норм. Но:

  1. В каждой итерации цикла выполняется проверка на то, что $i равно 0. Это существенно замедляет программу. Можно просто добавить в самом начале функции первые элементы в массив и начать вычислять с третьего числа.
  2. Раз уж сделали функцию, то сделайте так, чтобы она принимала в качестве аргумента верхнюю границу, до которой нужно вычислять последовательность. Это Вам эксклюзив, со звездочкой)
Bugaga159 25.01.2019 в 10:30
<?php
function fibonachiNum(int $doNum){
    $arr = [];
    $lastNum = 0;
    $arr[] = $lastNum;
    for($i=1; $i <$doNum; ){
        $arr[] = $i;
        $prev = $i;
        $i += $lastNum;
        $lastNum = $prev;
    }
    return $arr;
}

$num = 1000;
foreach (fibonachiNum($num) as $key => $value){
    echo $key+1 . ' - ' . $value . '<br>';
}
ivashkevich 25.01.2019 в 21:25

Ну огонь же! =)

[email protected] 25.01.2019 в 20:25
        $count = 0;
        for ($x=1000; $x <= 100000;$x++){
            if ($x % 17 == 0){
                echo $x;
                echo '<br>';
                $count++;
            }
        }

        echo $count;

        $x = 0;
        $y = 1;
        echo $x . '  ' ;

        for ($z = 0; $z <= 100000;$z++ ){

            $x += $y;
            $y = $x - $y;

            if ($x < 100000){

                    echo $x . '  ';

            }
        }
ivashkevich 25.01.2019 в 21:27
  1. ОК
  2. Программа выполняется бесконечно
[email protected] 26.01.2019 в 08:52

исправил,теперь вроде норм)

[email protected] 04.02.2019 в 17:07
<?php
$one = 0;
$two = 1;
$sum = 0;
for ($i = 0;$i <= 1000; $i++) {
  echo $sum . ', ';
  if ($one != 0) {
    $sum = $one + $two;
    $one = $two;
    $two = $sum;
  }
  else {
    $sum = $one + $two;
    $one = $two;
  }
  if ($sum > 1000) {
    break;
  }

}

?>
ivashkevich 07.02.2019 в 12:47

Ок!

Fellini 11.02.2019 в 17:22

По первой, подумалось, что выполнять почти сотню тысяч итераций нерационально :D
Про break уже успел в следующем уроке прочитать, пока на работе скучал.


<?php
for ($z=1000;$z<100000;++$z){
    if ($z%17===0){
        while ($z<=100000){
            echo $z.' ';
            $z+=17;
        }
        break;
    }
}
echo '<hr>';
$arrFib=[0,1];
for ($i = 2; $arrFib[$i - 2] + $arrFib[$i - 1] < 100000; ++$i){
    $arrFib[] = $arrFib[$i - 2] + $arrFib[$i - 1];
    echo $arrFib[$i].' ';
}
ivashkevich 11.02.2019 в 21:32

Отлично!

ashfedor 07.03.2019 в 19:21
for ($i= 1000; $i <= 10000; $i++){
    if ($i % 17 === 0){
        echo $i . ' ';
    }
}
echo '<br>';
$a = 0;
$b = 1;
echo $a . ' ' . $b . ' ';
for ($i= 1; $i <= 100000;){
   $i = $a + $b;
   $a = $b;
   $b = $i;
   echo $i . ' ';
}
ivashkevich 09.03.2019 в 19:28

Отлично!

[email protected] 10.03.2019 в 12:21
for ($i = 1000; $i <= 10000; $i++) {
    if ($i % 17 === 0) {
        echo $i . '<br>';
    }
}

//Числа Фибоначчи
$fib = [0,1];
for($i=1;$i<100000;$i++)
{
    $fib[] = $fib[$i]+$fib[$i-1];
}
ivashkevich 11.03.2019 в 21:08

Отлично.
С фибоначчи очень элегантное решение. Супер!

[email protected] 10.03.2019 в 22:10

числа которые делятся без остатка на 17

<?php
$firstNumber = 1000;
$lastNumber = 1000000;

for ($i = $firstNumber; $i <= $lastNumber; $i++) {
    if ($i % 17 === 0) {
        echo $i . ' ';
    }
}

Числа Фибоначчи

<?php
$x = 0;
$y = 1;

echo $x . ' ' . $y . '  ';

for ($i = 1; $i < 100000; $i++) {
    if ($i === $x + $y) {
        echo $i . ' ';
        $x = $y;
        $y = $i;
    }
}
ivashkevich 11.03.2019 в 21:09

Всё ок)

Grewi 15.03.2019 в 12:05
// Делим без остатка на 17
for($min = 1000; $min <= 10000; $min++){
    if($min % 17 === 0){
        echo $min.', ';
    }
}
echo '</br></br>';

// Число Фибоначи
$fib0 = 0;
$fib1 = 1;
echo $fib0.', '.$fib1.', ';
for($fib = 1; $fib <= 10000;){
    echo $fib.', ';
    $fibNext = $fib1 + $fib;
    $fib1 = $fib;
    $fib = $fibNext;
}
ivashkevich 17.03.2019 в 23:12

Отлично!

lilit 16.03.2019 в 13:57

Первое:

<?php
for ($i = 1000 ;$i <= 1000000;$i++) {
    if ($i % 17 == 0) {
        echo $i;
        echo ' ';
    }
}

Второе:

<?php

$firstNumber = 0;
$secondNumber = 1;
echo $firstNumber . ' ' . $secondNumber . ' ';
for ($sumNumber = 0;$sumNumber <= 100000;) {

    $sumNumber = $secondNumber + $firstNumber;
    $firstNumber = $secondNumber;
    $secondNumber = $sumNumber;
    echo $sumNumber;
    echo ' ';
}
lilit 16.03.2019 в 14:17

Или второе можно вот так...?

<?php
$secondNumber = 1;

for ($firstNumber = 0;$firstNumber <= 100000;) {
    echo $firstNumber . ' ';
    $sumNumber = $secondNumber + $firstNumber;
    $firstNumber = $secondNumber;
    $secondNumber = $sumNumber;
}
ivashkevich 17.03.2019 в 23:14

Отлично. Разницы в плане быстродействия нет, так что оба варианта годятся.

Boodoo 01.04.2019 в 06:22

Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка.

<?php
    for($i=1000; $i<=1000000; $i++) {
        if($i % 17 == 0) {
            echo $i . '<br>';
        }
    }
ivashkevich 01.04.2019 в 22:17

Отлично

Boodoo 01.04.2019 в 06:35

Найдите числа Фибоначчи меньше 100000. Числа Фибоначчи – это последовательность чисел, в которой первые два числа равны 0 и 1, а каждое последующее число равно сумме двух предыдущих чисел.
Должно получиться: 0, 1, 1, 2, 3, 5, 8 ...

<?php
    for($i=0, $j=1;$i<=100000,$j<=100000;) {
        echo $i . '<br>';
        echo $j . '<br>';
        $i += $j;
        $j += $i;
    }
ivashkevich 01.04.2019 в 22:17

Отлично

[email protected] 15.04.2019 в 21:18
<?php

for ($i = 1000;$i <= 1000000;$i++) {
    if($i%17===0){
        echo $i.'<br>';
    }
}
$arr = [0, 1];
$start = 0;

for ($x = 1; $x <= 100000;) {

    $x += $start;
    $start = $x - $start;

    if ($x<= 100000) {
        $arr [] = $x;
    }
}
var_dump($arr);
ivashkevich 17.04.2019 в 22:09

Зачем дважды проверяете, что число меньше определенного значения?

artemship 16.04.2019 в 11:23

Задача 1:

for ($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 === 0) {
         echo $i . ' ';
    }
}

Задача 2. Почему-то напрашивается решение с помощью массива:

$fib = [0, 1];
for ($i = 1; $fib[$i] < 100000; $i++) {
    $fib[] = $fib[$i] + $fib[$i - 1];
}
unset($fib[$i]);
var_dump($fib);

Если без массива, то так:

$previous = 0;
$current = 1;
echo $previous . ' ';
for ($i = 1; $current < 100000; $i++) {
    $current += $previous;
    $previous = $current - $previous;
    echo $previous . ' ';
}
echo '<br>Всего чисел: ' . $i;
ivashkevich 17.04.2019 в 22:10

Отлично

Dram 20.04.2019 в 13:24

Можно вопрос, который крутится в голове уже не первый урок?
Почему при проверке четности вы используете

if ($i % 2 === 0)

а не

if ($i % 2 == 0)

???

ivashkevich 20.04.2019 в 13:26

А в чем отличие этих операторов?

Dram 20.04.2019 в 13:29

Я конечно же вернулся на нужный урок и прочитал.
== проверка на равенство
=== проверка на тождественное равенство.

В нашем примере все равно что использовать, а я не могу понять где на практике это не прокатит и нужно будет брать именно ===, а не ==

ivashkevich 20.04.2019 в 13:35

Почти везде нужно тождественное равенство использовать. Потому что сравниваем именно 0 с 0. Зачем нам использовать приведения типов?

Dram 20.04.2019 в 13:38

Т.е. если мы знаем что будем сравнивать числовые значения, то использование === уместно и даже быстрее, ибо опускается проверка типов. Верно?

ivashkevich 20.04.2019 в 13:39

Верно)

Dram 20.04.2019 в 14:12

Первая задачка:

<?php
$z=0;
for ($i=1000;$i >= 1000 && $i <= 1000000;$i++){
    if ($i % 17 == 0){
        $z++;
        echo $i .'<br>';
    }
}
echo "В указанном диапазоне таких чисел " . $z . " штук";
ivashkevich 20.04.2019 в 14:31

$i >= 1000 - бесполезное условие. Всегда true.

Dram 20.04.2019 в 15:50

вторая домашка:

<?php
$n=0;
$m=1;
echo $n .' ';
for ($i=0;$m <= 100000;){
    echo $m .' ';
    $tpm = $n + $m;
    $n = $m;
    $m = $tpm;
}
ivashkevich 20.04.2019 в 16:38

Отлично

[email protected] 08.05.2019 в 13:32
for ($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 === 0) {
        echo $i.'<br>';
    }
};

$number = 1000;

while ($number <= 1000000) {
    if ($number % 17 === 0) {
        echo $number.'<br>';
    }
    $number++;
};

$a = 1;
$b = 1;
for ($i = 3; $i <= 100000; $i++) {
    $x = $a + $b;
    $a = $b;
    $b = $x;
    echo $x.'<br>';
}
$i = 3;
while ($i <= 100000) {
    $x = $a + $b;
    $a = $b;
    $b = $x;
    echo $x.'<br>';
    $i++;
}
ivashkevich 10.05.2019 в 13:36

Отлично

Moskva 14.05.2019 в 16:02

Код:

for ($i = 1000; $i <1000000; $i++){
    if ($i % 17 == 0){
        echo $i . '  ';
    }
}
echo '<br>';

for($i1=1, $i2 = 0 , $fibonacciNumbers = 0;  $fibonacciNumbers<100000; ){
    $i2 = $i1;
    $i1 = $fibonacciNumbers;
    echo $fibonacciNumbers . '<br>';
    $fibonacciNumbers = $i1+$i2;
}
ivashkevich 16.05.2019 в 00:14

Отлично

Bizzzon 06.07.2019 в 15:59
<?php
for($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 == 0) {
        echo $i;
        echo "</br>";
    }
}

Первая задача

ivashkevich 07.07.2019 в 17:59

Отлично

Reechniy 09.07.2019 в 05:06
Первая:
<?php

for ($i=1000;$i<=1000000;$i++){
    if($i%17==0){
        echo $i;
        echo '<br>';
    }
}

вторая:
<?php
$febo=array(0,1);
echo$febo[0] . ' ' . $febo[1] . ' ';
for($feboStep=1; $feboStep<=100000 ; $feboStep++) {
    if($feboStep==$febo[0]+$febo[1]) {
        $febo[0]=$febo[1];
        $febo[1]=$feboStep;
        echo$feboStep . ' ';
    }
}
ivashkevich 09.07.2019 в 07:02

По логике всё хорошо. По оформлению - должны быть пробелы после echo и вокруг операторов. У вас всё в кучу слиплось.

kvakazuabr 14.07.2019 в 09:55
for($i = 1000; $i < 1000000; $i++) {
        if($i%17===0) {
            echo $i . ', ';
        }
    }
ivashkevich 14.07.2019 в 10:12

Отлично

AlexxxEy 17.07.2019 в 01:34
/*Числа кратные 17*/
$Sum = 0;
$i=1000;
for(; $i<1000000;){
    $i++;
if($i % 17 == 0)
{
    print $i;
    print '</br>';
}
}
print '</br>';

/*Числа фибоначчи*/
$array = [0];
    print $array[0] . '</br>';
$f = 0;
for($i=1; $array[$i] < 100000; $i++){

       $array[$i + 1] = $array[$i] + $array[$i - 1];
    print $array[$i] . '</br>';
    }
ivashkevich 17.07.2019 в 04:57
$i=1000;
for(; $i<1000000;){
    $i++;

В таком случае алгоритм будет начинаться не с 1000, а с 1001. Инкрементить нужно в конце итерации. Непонятно, почему не использовали классическую запись цикла for.

if($i % 17 == 0)

Почему эта строка уехала влево? Отступы должны соблюдаться. Используйте Ctrl+Alt+L в phpstorm для автоматического форматирования кода.

В числах Фибоначчи - последнее добавленное в массив число не будет выводиться.

paskelas 24.07.2019 в 19:00

Самое сложное, это составить алгоритм. От количества вариантов выполнения Фибоначчи пришел в восторг. Вроде бы работает. Вариант с 2 переменными.

$a=0;
$b=1;
echo $a . ',';
echo $b . ',';
for (; $a+$b < 100000;) {
  echo $a + $b . ', ';
  $a = $a + $b;
  echo $a + $b . ', ';
  $b = $a + $b;
}
ivashkevich 24.07.2019 в 19:23

Да, вариантов хватает. Отлично!

Aleks 09.08.2019 в 13:50

Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка.

<?php
for ($i = 1000; $i < 1000000; $i++) {
    if ($i % 17 == 0) {
        echo $i;
        echo '<br>';
    }
}
ivashkevich 10.08.2019 в 07:19

Отлично

Aleks 12.08.2019 в 16:09

фибоначчи

<?php
echo $prev0 = 0;
echo'<br>';
echo $prev1 = 1;
echo'<br>';
for ($i = 1; $i <= 100000;) {
    $i = $prev0 + $prev1;
    $prev0 = $prev1;
    $prev1 = $i;
    echo $i;
    echo '<br>';
}
ivashkevich 13.08.2019 в 10:02

Отлично

Vladimir96 14.08.2019 в 08:14

Почти весь вечер не давал покоя фибоначи, а утром пришло озарение) Все работает, надеюсь озарение не подвело :D

    //Первое задание
   for($i = 1000; $i < 1000000; $i++) {

        if($i % 17 == 0) {
            echo $i . ', ';
        }
    }

    //Второе задание
    $fiboOne = 0;
    $fiboTwo = 1;

    for($f = 0; $fiboOne <= 100000; $f++) {

        echo $fiboOne . ', ';
        echo $fiboTwo . ', ';
        $fiboOne += $fiboTwo ;
        $fiboTwo += $fiboOne;
    }
ivashkevich 14.08.2019 в 18:30

Всё отлично, не подвело

[email protected] 25.08.2019 в 19:37
<?php
$i = 1000;

$divisibility = [];
for (; $i<=10000; $i++)
{
    if($i % 17 == 0 )
    {
        $divisibility[] = $i;
    }
}
foreach ($divisibility as $value)
{
    echo $value . '<br>';
}
ivashkevich 26.08.2019 в 07:05

Отлично

Ooleg 27.08.2019 в 10:39
$seventeen = [];

for ($i = 1000; $i <= 1000000; $i++){
    if ($i % 17 === 0){
        $seventeen[] = $i;
    }
}

var_dump($seventeen);

$fibo = [];
$prevNumber = 0;
$number = 1;

for ($i = 0; $i <= 100000; $i = $number + $prevNumber){
    if ($i == 0){
        $prevNumber = 0;
        $number = 1;
        $fibo[] = 0;
        $fibo[] = 1;
    }
    else {
        $fibo[] = $i;
        $prevNumber = $number;
        $number = $i;
    }
}

var_dump($fibo);
ivashkevich 28.08.2019 в 05:52
if ($i == 0){
        $prevNumber = 0;
        $number = 1;
        $fibo[] = 0;
        $fibo[] = 1;
    }

Можете сделать так, чтобы каждый раз в цикле не проверять условия? Подсказка: нужно вынести часть кода перед циклом.

Ooleg 28.08.2019 в 09:15

Так?

$fibo = [];
$prevNumber = 0;
$number = 1;

array_push($fibo, $prevNumber, $number);

for ($i = 1; $i <= 100000; $i = $number + $prevNumber){
        $fibo[] = $i;
        $prevNumber = $number;
        $number = $i;
}

var_dump($fibo);
ivashkevich 28.08.2019 в 17:45

Отлично

Dreft 01.09.2019 в 20:59
<?php

for ($i = 1000; $i <= 100000; $i++) {
    if ($i % 17 == 0) {
        echo $i . "<br>";
    }
}

//-----------------------------------------//

$firstNum = 0;
$secondNum = 1;
echo $firstNum . ", ";
echo $secondNum . ", ";
for ($numbers = 1; $numbers <= 100000;) {
    $numbers = $secondNum + $firstNum;
    $firstNum = $secondNum;
    $secondNum = $numbers;
    echo $numbers . ", ";
}
ivashkevich 02.09.2019 в 05:02

Отлично!

XXX 03.09.2019 в 15:25
<?php
$a = 0;
$b = 1;
echo $a . ', ' . $b . ', ';
for (; $fibonacci <= 100000;) {
    $fibonacci = $a + $b;
    $a = $b;
    $b = $fibonacci;
    if ($fibonacci < 75025) {
        echo $fibonacci . ', ';
    }
    elseif ($fibonacci <= 100000){
        echo $fibonacci.'.';
    }
}

Хотя в данном решении лучше заменить цикл for на while

ivashkevich 03.09.2019 в 18:57

А зачем эти условия про точки и запятые?

XXX 03.09.2019 в 19:22

Если сделать полностью без условий, то выводится одно значение после 100000. Если поставить одно условие, чтобы показывать числа до 100000, то все работает хорошо за исключением запятой. Она ставится и после последнего числа. Для этого и сделал условия, чтобы вместо запятой получить точку.

ivashkevich 03.09.2019 в 19:26

А если граница сдвинется? Решение должно быть гибким и не завязываться на конкретное число.

Clawson 04.09.2019 в 14:50

Задача 1

<?php
for ($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 === 0) {
        echo $i . ' ';
    }
}

Задача 2

<?php
$fibonacciNum = [0, 1];
$endPoint = 100000;
for ($i = 1;; $i++) {
    $num = $fibonacciNum[$i] + $fibonacciNum[$i-1];
    if ($num < $endPoint) {
        $fibonacciNum[$i+1] = $num;
    }
    else {
        break;        
    }
}

foreach ($fibonacciNum as $num) {
    echo $num . ' ';
}

Во второй задаче пришлось забежать вперед, чтоб понять как выйти из цикла.

ivashkevich 04.09.2019 в 21:23

Чтобы выйти из цикла можно использовать второй параметр цикла for.

Clawson 05.09.2019 в 07:29

Что-то вроде (($num = $fibonacciNum[$i] + $fibonacciNum[$i-1]) < 100000)? Не хотелось в условии присваивать что-то переменной.. А если не загонять значение в переменную, получается снова придется рассчитывать сумму повторно, чтобы добавить как элемент массива. Или такое практикуется и это нормально?

ivashkevich 05.09.2019 в 19:38

Чем проще тем лучше. Ваше изначальное решение тоже норм.

H3licoptero 23.09.2019 в 23:48
for ($i = 1000; $i < 10000; $i++) {
    if ($i % 17 === 0) {
        echo $i . ', ';
    }
}
ivashkevich 24.09.2019 в 08:47

Отлично

dliashchenko 24.09.2019 в 17:59
<?php

for($i = 1000; $i <= 1000000; $i++){
    if($i % 17 == 0){
        echo $i.", ";
    }
}

$numFirst = 0;
$numSecond = 1;
echo $numFirst.", ".$numSecond.", ";

for($j = 0; $j < 100000;){
    $j= $numFirst + $numSecond;
    $numFirst = $numSecond;
    $numSecond = $j;
    echo $j.", ";
}
ivashkevich 24.09.2019 в 20:20

Отлично

iev37 25.09.2019 в 16:42
<?php
echo $num0 = 0 . ' ';
echo $num1 = 1 . ' ';
for ($x = 0 ; $x < 100000 ;) {
    echo $x = $num0 + $num1 . ' ';
    $num0 = $num1;
    $num1 = $x;
}
ivashkevich 27.09.2019 в 18:00

Ошибки возникают.

Notice: A non well formed numeric value encountered in [...][...] on line 6
[email protected] 25.09.2019 в 19:48
<?php
$zero = 0;
echo $zero.'<br>';
$one = 1;
echo $one.'<br>';
$fibo=0;
for (; $fibo < 100000; ) {
    $z=$zero+$one;
    echo $z.'<br>';
    $fibo=$z+$one;
    echo $fibo.'<br>';
    $zero=$fibo+$z;
    echo $zero.'<br>';
    $z=$fibo+$zero;
    echo $z.'<br>';
    $one = $z +$zero;
    echo $one.'<br>';
}

Выглядит ужасно,зато работает)

ivashkevich 27.09.2019 в 18:03

Зачем столько переменных? Достаточно ведь трёх. Жесть какая-то)

ZeeCaptain 09.10.2019 в 10:24
<?php
$prev=0;
$prevMem = 0;
echo $prev.'<br>';

for ($now =1; $now < 100000;) {
    $prevMem = $now;
    $now = $now + $prev;
    $prev = $prevMem;
    echo $now.'<br>';

}
ivashkevich 09.10.2019 в 19:26

Супер!

kvakazuabr 10.10.2019 в 20:36
for($i = 1000; $i < 1000000; $i++) {
  if($i%17==0) {
    echo $i . ' ';
  }
}
$n1=0;
$n2=1;
for(;$n1 < 100000;) {
  echo $n1 . ' ';
  [$n1,$n2] = [$n2, $n1+$n2];
  $i++;
}
ivashkevich 10.10.2019 в 22:00

Отлично!

[email protected] 16.10.2019 в 09:56

1.

<?php
for ($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 == 0) {
        echo $i;
        echo '<br>';
    }
}

2.

<?php
$a = 0;
$b = 1;
echo $a;
echo '<br>';
echo $b;
echo '<br>';
for ($fibon = 1; $fibon <= 100000;) {

    $fibon = $a + $b;
    $a = $b;
    $b = $fibon;
    echo $fibon;
    echo '<br>';

}
ivashkevich 16.10.2019 в 10:04

Супер!

sar16520 16.10.2019 в 16:22
<?php 

for($x=1000; $x<1000000;$x++){
    if($x % 17 === 0){
        echo $x. ' ';
    }
}
echo '<br>';

$one=1;
$zero=0;
echo $zero, '<br>', $one, '<br>';

for($y=1; $y <= 100000;){
    $y= $one + $zero;
    $zero= $one;
    $one= $y;
    echo $y, '<br>';
}
ivashkevich 16.10.2019 в 21:24

Отлично

VladimirTitov 06.11.2019 в 13:43
$arr = [0, 1];

for ($i = 1; $arr[$i] <= 100000; $i++) {

    $arr[] = ($arr[$i] + $arr[$i-1]);

}

var_dump($arr);

Привет! Это второе задание) первое простое

ivashkevich 07.11.2019 в 11:12

Отлично

andreskrip 11.11.2019 в 01:47
//Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка.
$numbers17 = [];
for ($a = 1000; $a <= 1000000; $a++) {
    if ($a % 17 == 0){
        $numbers17 [] = $a;
    }
}
var_dump($numbers17);
//Найдите числа Фибоначчи меньше 100000.
$fibonacci = [0, 1];

for ($x = 1; $fibonacci [$x] <= 100000; $x++) {
    $fibonacci [$x + 1] = $fibonacci [$x] + $fibonacci[$x - 1];
    if ($fibonacci [$x + 1] >= 100000){
        break;
    }
}
var_dump($fibonacci);

Со вторым заданием осталась проблема с последним значением, которое больше 100.000, но при этом условие в теле цикла все равно почему то пропускает его, проверял дебагером, и не нашел причины. Надеюсь на подсказку)

andreskrip 11.11.2019 в 13:06

Не редактировал комментарий, чтобы показать изменения: сидел ломал голову и понял свою ошибку, что сначала я сохраняю значение в массив, а только потом проверяю его. Поэтому решил сначала вынести проверку, а лишь затем сохранять значение в массив.

//Найдите числа Фибоначчи меньше 100000.
$fibonacci = [0, 1];

for ($x = 1; $fibonacci [$x] <= 100000; $x++) {
    if ($fibonacci [$x] + $fibonacci[$x - 1] >= 100000) {
        break;
    }
    $fibonacci [$x + 1] = $fibonacci [$x] + $fibonacci[$x - 1];
}
var_dump($fibonacci);
ivashkevich 11.11.2019 в 19:41

Отлично!

[email protected] 16.11.2019 в 17:07

Первое задание

<?php
$array = [];
for($i = 1000; $i < 1000000; $i++) {
if($i % 17 === 0) {
    $array[] = $i;
}
};
var_dump($array);
?>
ivashkevich 18.11.2019 в 10:55

Отлично. Только закрывающий тег ?> не нужен

[email protected] 16.11.2019 в 20:02
<?php

$arr = [0, 1];

for ($i = 0; $arr[$i] < 100000;) {
    echo $arr[$i] . ' ';
    $i++;
    $arr[] = $arr[$i] + $arr[$i-1];
}
ivashkevich 18.11.2019 в 10:55

Отлично

[email protected] 20.11.2019 в 16:00
<?php
$fibonachiNumbers = [0, 1];
$currentValue = 0;
for ($i = 2;; $i++){
    $currentValue = $fibonachiNumbers[$i - 1] + $fibonachiNumbers[$i - 2];
    if ($currentValue < 100000){
        $fibonachiNumbers[$i] = $currentValue;
    }else{
        break;
    }
}
foreach($fibonachiNumbers as $number){
    echo $number;
    echo '<br>';
}
?>
ivashkevich 21.11.2019 в 13:11

Зачем два цикла, если можно одним?

YuraG 29.11.2019 в 23:59
#Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка.
for ($start = 1000, $end = 1000000; $start <= $end; $start++) {
    if ($start % 17 == 0) {
        echo $start . ' ';
    }
}

#Найдите числа Фибоначчи меньше 100000.
# вариант 1
$k = 0;
$i = 1;
echo $k . ' ' . $i . ' ';
for ($sum = 0; $sum < 100000;) {
    $sum = $k + $i;
    echo $sum . ' ';
    $k = $i;
    $i = $sum;
}

# вариант 2
$fib = [0, 1];
$endFib = 100000;

for ($sum = 0; $sum <= $endFib;) {
    $sum = $fib[count($fib)-2] + end($fib);
    $fib[] = $sum;
}

echo implode(' ', $fib);
ivashkevich 01.12.2019 в 09:27

Отлично

Salexandr 13.12.2019 в 19:16
for ($i = 1000; $i <= 1000000; $i++){
    if ($i % 17 === 0) {
        echo $i . ' ';
    }
}
ivashkevich 14.12.2019 в 15:28

Супер!

Salexandr 15.12.2019 в 19:48
$a = 0;
$b = 1;
$sum = $a + $b;
echo $a . ' ' .$b . ' '. $sum . ' ';
while ($sum <= 100000){
    $a = $b;
    $b = $sum;
    $sum = $a + $b; // на этой итерации можем выйти за диапазон
    if ($sum <= 100000) { // поэтому отсекаем такую возможность
        echo $sum . ' ';
    }
}
ivashkevich 17.12.2019 в 13:25

Как избежать проверки одного и того же условия дважды?

Salexandr 18.12.2019 в 02:08
  • Найти сумму до условия сравнения.
    for ($a = 0, $b = 1, $sum = 0; $sum < 100000; $a = $b, $b = $sum, $sum = $a + $b) {
    echo $sum . ' ';

    (подсмотрел красивое решение)

ivashkevich 19.12.2019 в 07:09

Честно говоря, ничего красивого в этом решении нет. Какая-то дикая мешанина в одну строку. Код прежде всего должен читаться легко, чтобы даже дебил понял)
Чтобы избежать проверки условия дважды, достаточно было перенести вывод суммы в начало тела цикла:

<?php

$a = 0;
$b = 1;
$sum = $a + $b;
echo $a . ' ' .$b . ' ';
while ($sum <= 100000){
    echo $sum . ' ';
    $a = $b;
    $b = $sum;
    $sum = $a + $b;
}
Salexandr 19.12.2019 в 21:52

И правда:)
Все просто, как можно было не додуматься?!

ivashkevich 21.12.2019 в 20:22

Учитесь, и всё получится)

eNergy 12.01.2020 в 10:47
<?php

for ($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 === 0){
        echo $i . '<br>';
    }
}
$x = 0;
$y = 1;
for ($i = 0; $i <= 100000; $i = $x + $y) {
    echo $i . ', ';
    $x = $y;
    $y = $i;
}

С числами Фибаначчи сам сделать не смог, нашел вариант с циклом while и переделал для for

ivashkevich 12.01.2020 в 15:39

Пойдет, но с циклом while было бы лучше - когда вся логика идёт построчно, как будто читаешь книгу. Здесь же часть алгоритма в шапке цикла for, а часть в теле. Приходится прыгать глазами туда-сюда и сводить логику воедино.

[email protected] 27.01.2020 в 18:02
<?php

echo 'Найдите числа Фибоначчи меньше 100000<br><br>';
$a = 0;
$b = 1;
for ( ; $a + $b < 100000; ) {
    $c = $a + $b;
    echo 'c=', $c, ' ';
    $a = $b;
    $b = $c;
};

echo '<br><br>Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка<br><br>';
for ($x = 1000;$x <= 1000000;$x++) {
    if ($x % 17 === 0) {
        echo $x;
        echo ' ';
    }
};
ivashkevich 28.01.2020 в 18:52

Первые два числа последовательности не выводятся. Непонятно, зачем перед каждым числом выводится c=

Второе задание ОК

[email protected] 28.01.2020 в 22:49
<?php

echo 'Найдите числа Фибоначчи меньше 100000<br><br>';
$a = 0;
$b = 1;
echo $a, ' ', $b, ' ';
for ( ; $a + $b < 100000; ) {
    $c = $a + $b;
    echo $c, ' ';
    $a = $b;
    $b = $c;
};
ivashkevich 29.01.2020 в 06:27

Отлично

X-Nick 05.02.2020 в 21:38
<?php
$array = [];
for ($x = 1000; $x < 1000001; $x++){
    if ($x % 17 == 0){
        $array[] = $x;
    }
}
var_dump($array);

ВТОРАЯ ЗАДАЧА:

<?php

$fib = [0, 1];
for($y = 1; ($current = $fib[$y] + $fib[$y - 1]) < 100000; $y++) {
    $fib[] = $current;
}
var_dump($fib);
ivashkevich 11.02.2020 в 14:57

Отлично

Apatit 19.02.2020 в 16:53

Первое задание

<?php
for ($i = 1000;$i <= 1000000;$i++) {
    if ($i % 17 === 0) {
        echo $i;
        echo ' ';
    }
}
?>

Второе задание
Долго не мог понять, как вывести первые 0 и 1 :)

<?php
$a = 0;
$b = 1;
$fibonacci = 0;

echo $a . ' ';
echo $b . ' ';
for ($i = 0; $i <= 100000; $i++) {
    $fibonacci = $a + $b;
    $a = $b;
    $b = $fibonacci;
    echo $fibonacci . ' ';
}
?>
ivashkevich 19.02.2020 в 19:22

Супер! Просто и понятно

ivashkevich 19.02.2020 в 19:23

Но во втором задании можно без i обойтись, сравнивать сразу значение текущего числа Фибоначчи с максимально допустимым.

Apatit 20.02.2020 в 12:26

Вы имеете ввиду вот так:

<?php
$a = 0;
$b = 1;
$fibonacci = 0;

echo $a . ' ';
echo $b . ' ';
for ($fibonacci = 1; $fibonacci <= 100000;) {
    $fibonacci = $a + $b;
    $a = $b;
    $b = $fibonacci;
    echo $fibonacci . ' ';
}
?>

Уже после задания нашел вот такое решение, по моему очень элегантное :)

$a = array(0, 1);

for ($i = 2; $i < 200; $i++) {
        $a[$i] = bcadd($a[$i-1], $a[$i-2]);
}

print_r(join(', ', $a));
ivashkevich 20.02.2020 в 12:30

Теперь отлично)

[email protected] 16.03.2020 в 16:29
echo $x = 0 . ' ';             //последовательность чисел Фибоначчи
echo $y = 1 . ' ';
for ($z = 0, $x = 0, $y = 1; $z < 100000; $x = $y, $y = $z) {
    $z = $x + $y;
    echo $z . ' ';
}

Долго думал над решением, а оказалось всё очень просто.

ivashkevich 16.03.2020 в 20:02

Отлично

ivashkevich 16.03.2020 в 20:03

Отлично

[email protected] 26.03.2020 в 16:16
<?php
for ($i = 1000;$i <= 1000000; $i++){
    if ($i % 17 == 0) {
        echo $i;
        echo '<br>';
    }
}
?>
[email protected] 26.03.2020 в 16:26
<?php
$i = 0;
for ($fib = 1; $fib < 100000; $fib += $i) {
echo '<br>' . $i;
echo '<br>' . $fib;
$i += $fib;
}
ivashkevich 27.03.2020 в 15:07

Где отступы?

serjioG 31.03.2020 в 09:38
<?php
for ($i = 1000; $i <= 1000000; $i++){
    if ($i % 17 === 0) {
        echo $i;
        echo ' ';
    }
}
//=======================================//
$num = 0;
for ($fib = 1; $fib < 100000; $fib += $num){
    echo '<br>' . $num;
    echo '<br>' . $fib;
    $num += $fib;
}
ivashkevich 31.03.2020 в 11:47

Супер! Только пробел перед открывающейся фигурной скобкой не забывайте ставить.

WarLikeLaux 06.04.2020 в 15:06
$data = [
    'min' => 1000,
    'max' => 1000000,
    'div' => 17
];

for ($i = ($data['min'] + (17 - $data['min'] % 17)); $i <= $data['max']; $i += $data['div']) {
    echo $i . "<br/>";
}
ivashkevich 06.04.2020 в 16:09

Ничегошеньки непонятно. Но работает, что уже неплохо. Советую ознакомиться с другими решениями в комментариях.

WarLikeLaux 06.04.2020 в 15:19
$max = 100000;

$lastNumbers = [0, 1];
echo "$lastNumbers[0], $lastNumbers[1]";

for ($i = array_sum($lastNumbers); $i <= $max; $i = array_sum($lastNumbers)) {
    echo ", $i";
    $lastNumbers[0] = $lastNumbers[1];
    $lastNumbers[1] = $i;
}
ivashkevich 06.04.2020 в 16:10

А вот тут норм! Довольно простое решение.

Timurik 09.04.2020 в 19:20
for ($i = 1000;$i <= 1000000;$i++) {
    if ($i % 17 === 0) {
        echo $i;
        echo ', ';
    }
}

Результат займет много места)

$y = 1;
for ($i = 0; $i <= 100000;$i = $i + $y) {
    if ($i > 0) {
        $y = $i - $y;
        echo ', '.$i;
    } else {
        echo '0';
    }   
}
echo '.';

Результат:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025.

ivashkevich 10.04.2020 в 12:48

Отлично. Но в целом во втором алгоритме проще в самом начале вывести 0 и избавиться в теле цикла от условий

Timurik 10.04.2020 в 13:23

Вот исправил:

echo '0';
$y = 1;
for ($i = 0; $i <= 100000;$i = $i + $y) {
    if ($i > 0) {
        $y = $i - $y;
        echo ', '.$i;
    }   
}
echo '.';
ivashkevich 10.04.2020 в 13:30

Лучше так

echo '0, 1, 1';
$y = 1;
for ($i = 2; $i <= 100000;$i = $i + $y) {
        $y = $i - $y;
        echo ', '.$i;
}
echo '.';

Чтобы цикл был как можно проще

Timurik 10.04.2020 в 13:41

Большое спасибо! Исправил.

[email protected] 10.04.2020 в 12:22
#Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка.
$divBy17 = [];
for ($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 == 0) {
        $divBy17[] = $i;
    }
}
#Искомые числа лежат в массиве $divBy17[], ибо слишком много чисел, чтобы их все выводить на экран

#Найдите числа Фибоначчи меньше 100000.
function fibonacci(int $num) {
    $fibonArr = [0, 1];
    for ($i = 2; $i < $num; $i++) {
        $fibonArr[$i] = $fibonArr[$i - 1] + $fibonArr[$i - 2];
    }
    return $fibonArr;
    #В каком виде подать результат в задаче не сказано, а т.к. результат довольно объемный, я решил вернуть массив 
    #(а дальше, типа, уже следующими функциями делайте с этим архивом, что хотите :) )
}
ivashkevich 10.04.2020 в 13:19

Скобка, открывающая тело функции, пишется с новой строки.
В остальном отлично

[email protected] 10.04.2020 в 13:29

Спасибо, учту.
Успел привыкнуть на другом курсе - там преподаватель писал именно так

ivashkevich 10.04.2020 в 13:31

Это не соответствует PSR

[email protected] 10.04.2020 в 18:38
<?php
function fibonacci(int $n)
{
    if($n == 1)
        return 0;
    elseif($n == 2)
        return 1;
    else
        return fibonacci($n-1) + fibonacci($n-2);
}
$res = 0;
for($start = 1;;$start++)
{
    $res = fibonacci($start);
    if($res > 100000)
        break;
    echo $res.'<br>';
}

Хотя я так понимаю рекурсия далеко не быстрый вариант

ivashkevich 11.04.2020 в 21:08

Для блоков if-else всегда используйте фигурные скобки. Где-то уже нахватались плохих примеров :)
После if и else всегда ставятся пробелы.
В целом решение рабочее, но более неоптимальное придумать сложно - на каждой итерации происходит расчет всех предыдущих значений.

n.yurasheva 11.04.2020 в 12:53
<?php
//Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка.
for ($i = 1000;$i <= 1000000;$i++) {
    if ($i % 17 === 0) {
        echo $i.', ';
    }
}
//числа Фибоначчи
$i1=0;
$i2=1;
echo $i1;
for ($i2 = 1;$i2 <= 100000;) {
    echo ', '.$i2;
    $i2=$i1+$i2;
    $i1=$i2-$i1;
}
ivashkevich 11.04.2020 в 21:27

Отлично

Fill 13.04.2020 в 06:11
<?php

// Найдите числа от 1000 до 1000000, которые делятся на 17 без остатка.
for ($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 == 0) {
        echo $i . '</br>';
        $i += 16;
    }
}

// Можно сделать быстрее
for ($i = 1000; $i % 17 != 0; $i++) {}
for (; $i <= 1000000; $i+=17) {
    echo $i . ' ';
}

// Найдите числа Фибоначчи меньше 100000.
for ($i=0, $a = 0,  $b = 1; $i < 100000; $i = $a + $b) {
    echo $i . ' ';
    $a = $b;
    $b = $i;
}
ivashkevich 13.04.2020 в 14:51

Отлично, и пример с оптимизацией тоже ок!

[email protected] 13.04.2020 в 16:14
<?php
function getSumOfDivBy17()
{
    $sumOf17div = 0;

    for ($i = 1000; $i < 1000000; $i++) {
        if ($i % 17 == 0) {
            $sumOf17div += $i;
        }
    }
}

function getFibonacciToMillion() 
{
    $number1 = 0;
    echo $number1 . '<br>';
    $number2 = 1;
    echo $number2 . '<br>';
    $fibNumber = $number1 + $number2;

    while ($fibNumber <= 1000000) {
        echo $fibNumber . '<br>';
        $number1 = $number2;
        $number2 = $fibNumber;
        $fibNumber = $number1 + $number2;
    }
}

С названиями функций, конечно, напряженка)

ivashkevich 14.04.2020 в 16:50

По-хорошему бы первое решение тоже что-то выводить должно

[email protected] 14.04.2020 в 08:33

Добрый день!

<?php
for($i = 1000; $i <= 1000000; $i++){
    if ($i % 17 === 0){
        echo $i."</br>";
   }
}
$arrFib[0]=0;
$arrFib[1]=1;
$i=2;
while($arrFib[$i-1]+$arrFib[$i-2]<=100000){
    $arrFib[$i]=$arrFib[$i-1]+$arrFib[$i-2];
    $i++;
}
foreach ($arrFib as $fib){
    echo $fib."</br>";
}
ivashkevich 14.04.2020 в 19:29

Отлично

Kennard 16.04.2020 в 21:32
// первое задание

$min = 1000;
$max = 1000000;

for (; $max >= $min; $i = $min++) {
    if ($i % 17 == 0) {
        echo $i . '<br>';
    }
}

// второе задание 
<?php

    echo 'не осилил';
ivashkevich 17.04.2020 в 09:13
$min = 1000;
$max = 1000000;

лучше перенести в первую часть круглых скобок

Kennard 17.04.2020 в 16:39

Поспал и все таки понял как должна работать вторая задача

<?php

$firstNum = 0;

for ($i = 1;$i < 100000; $i += $firstNum) {
    echo $firstNum . ' ' .  $i . ' ';
    $firstNum += $i;
}

?>
ivashkevich 18.04.2020 в 05:31

Отличный алгоритм!
?> в конце файла не ставится.

Kennard 17.04.2020 в 16:41
<?php

for ($min = 1000 and $max = 1000000; $max >= $min; $i = $min++) {
    if ($i % 17 == 0) {
        echo $i . '<br>';
    }
}

?>
ivashkevich 18.04.2020 в 05:30

Не нужно and, почитайте документацию по for, там есть примеры объявления нескольких переменных.
?> в конце файла не ставится.

Developer 21.04.2020 в 14:12

Первое задание:

<?php
for ($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 == 0) {
        echo $i . '<br>';
    }
}

Второе задание:

<?php
$number1 = 0;
$number2 = 1;
for ($i = 0; $number1 <= 100000; $i++) {
    echo $number1 . '<br>';
    echo $number2 . '<br>';
    $number1 += $number2;
    $number2 += $number1;
}

Ох как я намаялся с этим фибоначи. В итоге пришлость подсмотреть. Затем долго анализировал другие варианты в комментариях, на подсознании понимаю, а так тяжело дается.

ivashkevich 21.04.2020 в 18:29

Отлично

[email protected] 23.04.2020 в 19:49
<?php
// Первое задание
for ($a = 1000; $a <= 100000; $a++) {
    $b = $a / 17;
    if (is_integer($b)) {
        echo $a. '<br>';
    }
}

// Второе задание
$c = 0;
$d = 1;
echo $c. '<br>'. $d. '<br>';
for ($i = 1; $i <= 100000; $i = $c + $d) {
    $c = $d;
    $d = $i;
    echo $i. '<br>';
}
ivashkevich 24.04.2020 в 04:47

Для первой задачи используйте оператор остатка от деления.

[email protected] 24.04.2020 в 10:47
<?php
for ($a = 1000; $a <= 100000; $a++) {
    if ($a % 17 === 0) {
        echo $a. '<br>';
    }
}
ivashkevich 24.04.2020 в 11:35

Отлично!

[email protected] 24.04.2020 в 10:15

С первым всё понятно, та же проверка, что и с четными числами.
Решение с числами Фибоначчи


$app = 0;
$ap = 1;
echo $app;
for ($a = 1;$a < 100000;) {
    $a = $app + $ap;
    echo ', ' . $ap;
    $app = $ap;
    $ap = $a;
}
ivashkevich 24.04.2020 в 11:29

Отлично!

titelivus 29.04.2020 в 10:07
<?php

for ($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 == 0) {
        echo $i . '<br>';
    }
}
<?php

$fib1 = 0;
$fib2 = 1;

for ($sum = 0; $sum < 1000; $sum = $fib1 + $fib2) {
    if ($sum == 0) {
        echo $fib1 . ', ' . $fib2;
    } else {
        echo ', ' , $sum;
        $fib1 = $fib2;
        $fib2 = $sum;
    }
}
ivashkevich 29.04.2020 в 19:18

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

titelivus 30.04.2020 в 04:45
<?php

$fib1 = 0;
$fib2 = 1;
echo $fib1 . ', ' . $fib2;
for ($sum = 1; $sum < 1000; $sum = $fib1 + $fib2) {
    echo ', ' . $sum;
    $fib1 = $fib2;
    $fib2 = $sum;
}
ivashkevich 30.04.2020 в 11:18

Отлично

Stimi 30.04.2020 в 01:13
<?php

for ($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 == 0) {
        echo $i;
        echo ' ';
    }
}

$a = 0;
$b = 1;
for($numFib = 0; $numFib < 100000; $numFib += $a) {
echo $numFib . ' ';
$a = $b;
$b = $numFib;
}
ivashkevich 30.04.2020 в 11:17

Что с отступами во втором решении?

Stimi 30.04.2020 в 12:32

В оформлении кода или выводит не правильно?

ivashkevich 30.04.2020 в 19:05

В оформлении

titelivus 30.04.2020 в 04:52

Я в содержании по функциям для работы с массивами не нашел нужной функции, а потом посмотрел выше содержания 'См. также is_array(), explode(), implode(), split(), preg_split() и unset().' Сразу и не заметишь)

<?php

$numbers = [1, 3, 2, 7, 4, 9, 5, 8, 6];
sort($numbers);
$string = implode(':', $numbers);
echo $string;
ivashkevich 30.04.2020 в 11:19

Теперь норм.
P.S. отвечайте на комментарии, а не добавляйте новые.

[email protected] 30.04.2020 в 11:36

1

for ($i = 1000; $i <= 100000; $i++) {
    if ($i % 17 == 0) {
        echo $i . '<br>';
    }

2 с вторым сам не справился :( наиболее понятным показался вариант

$fib1 = 0;
$fib2 = 1;
echo $fib1 . ', ' . $fib2;
for ($sum = 1; $sum < 100000; $sum = $fib1 + $fib2) {
    echo ', ' . $sum;
    $fib1 = $fib2;
    $fib2 = $sum;
}
ivashkevich 30.04.2020 в 11:48

Оба варианта не работают

[email protected] 30.04.2020 в 12:55

<?php
Задание №1.//Найти число от 1000 до 1000000, кот. делится на 17 без остатка.

for ($i =1000; $i<=1000000; $i ++ ){
   if ($i % 17== 0){
       echo $i . ',';

   }

}

<?php
Задание №2.//Найдите числа Фибоначчи меньше 100000.

echo 'Число Фибоначчи:' .'=';
$prev = 0;
$curr = 1;
$fib = 0;
for($i=0;$i<=100000;$i++){
    echo $fib . ",";
    $prev = $curr;
    $curr = $fib;
    $fib = $prev + $curr;
}
ivashkevich 30.04.2020 в 19:07
       echo $i . ',';

   }

}

Лишние переносы

Во втором решении выводятся числа куда больше чем 100000:

Число Фибоначчи:=0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141

Что не соответствует заданию

2yeezy4me 30.04.2020 в 18:23

1

<?php
for ($i = 1000; $i < 1000000; $i++) {
    if ($i % 17 === 0) {
        echo $i;
        echo ' ';
    }
}

2

<?php
$num2 = 1;
for ($num1 = 0; $num1 < 100000;) {
    $sum = $num1 + $num2;

    echo $num1;
    $num1 = $num2;
    $num2 = $sum;

    echo ', ';

}
ivashkevich 30.04.2020 в 19:15

Отлично

Sviatoslav 01.05.2020 в 23:10

Задание 1:

for ( $i = 1000; $i <= 1000000; $i++) {
  if ($i % 17 == 0) {
      echo $i . ' '; }
}

Задание 2:

$arr = ['0', '1'];
$finalNum = 100000;

for ($i = 2; $i < $finalNum; $i++) {
  $arr[$i] = $arr[$i-1] + $arr[$i-2];
  if ($arr[$i] > $finalNum) {
      unset($arr[$i]);
      break; }
}

foreach ($arr as $n) {
  echo $n . ', ';}
ivashkevich 02.05.2020 в 16:14

Исправьте оформление, читать невозможно. Как исправите - напишите комментарий в ответ на мой, проверю.

Sviatoslav 02.05.2020 в 19:24

Прошу прощения. Писал код в sublime text. В следующих заданиях буду учитывать замечание.

<?php
for ($i = 1000; $i <= 1000000; $i++) {
    if ($i % 17 == 0) {
        echo $i . ' ';
    }
}
<?php
$arr = ['0', '1'];
$finalNum = 100000;

for ($i = 2; $i < $finalNum; $i++) {
    $arr[$i] = $arr[$i - 1] + $arr[$i - 2];
    if ($arr[$i] > $finalNum) {
        unset($arr[$i]);
        break;
    }
}

foreach ($arr as $n) {
    echo $n . ', ';
}
ivashkevich 03.05.2020 в 20:52

Супер!

[email protected] 02.05.2020 в 08:28
<?php
echo 'Число Фибоначчи:' . $prev . '=';
$prev =0;
$curr =1;
echo $prev;

for ($curr = 1;$curr <= 100000;){
    echo ', '.$curr;
    $curr = $prev + $curr;
    $prev=$curr - $prev;
}

А так норм?
ivashkevich 02.05.2020 в 16:18

Ошибка на четвертой строке

Notice:  Undefined variable: prev on line 4

И отвечайте на комментарии, а не создавайте новые. Я вам вроде уже писал про это.

[email protected] 02.05.2020 в 19:11

У меня все работает. Никаких ошибок. Вот результат;

Число Фибоначчи:= 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025

ivashkevich 03.05.2020 в 20:50

Тогда вам нужно включить показ notice-ов в php.ini

IePyton 09.05.2020 в 12:04
<?php

//числа от 1000 до 1000000, которые делятся на 17 без остатка

for ($x = 1000; $x <= 1000000; $x++) {
    if ($x % 17 === 0) {
        echo $x . '<br >';
    }
}

// числа Фибоначчи меньше 100000

$a = 0;
$b = 1;
for ($fab = 0; $fab <= 100000;) {
    if ($a ==0 && $b == 1) {
        echo $a . '<br >';
        echo $b . '<br >';
    }

    $fab = $a + $b;
        echo $fab . '<br >';
        $a = $b;
        $b = $fab;
    }
ivashkevich 10.05.2020 в 08:58

Ок. Только проблема с форматированием. Делайте отступы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

Hellbound 14.05.2020 в 18:51

Ссылка на решение - https://codingzone.io/problems/2/solution/314
Странно, вроде еще вчера было другое задание

ivashkevich 15.05.2020 в 18:25

Заданий там много)
Не забывайте - строки в одинарных кавычках

GeoOK 21.05.2020 в 16:47

https://codingzone.io/problems/2/solution/844

Судя по предыдущим комментариям, есть подозрение, что до этого в этом уроке, было другое домашнее задание. До этого всегда смотрел как решают другие обучающиеся, а тут ничего не понял... Так и есть или у меня какие-то глюки? )))

ivashkevich 22.05.2020 в 08:08

Так и есть)
Где же вы откопали этот оператор <> ))

Цикл while больше подходит для такой задачи. Пример - https://codingzone.io/ru/problems/2/solution/340

GeoOK 22.05.2020 в 12:29

Ну собственно, как вы и рекомендовали - после каждого урока знакомлюсь дополнительно с мануалом на php.net по пройденному материалу. Поэтому вспомнил, что что-то такое видел в массивах... )))

Насчет while согласен, получилось более красиво - есть к чему стремиться! ;-) Пока еще не всегда получается понять, какой лучше цикл использовать.

Ну и если честно, я всегда думал, что для дз желательно использовать тему пройденного урока, поэтому и решил через for

ivashkevich 22.05.2020 в 18:58

Да, было бы логично использовать for, согласен)

[email protected] 01.06.2020 в 14:13

Доброго времени суток, я возможно не так понял домашнее задание. Я ознакомился с интерфейсом GodingZone.IO прошёл задачи переходя по ссылке и выполнил вот такое задание, с переменной местами слов.

<?php
$a = 'hello world';
$a = implode(' ', array_reverse(explode(' ', $a)));
var_dump($a);

Это конечно всё хорошо, но я думал будет задание связанное с уроком "цикл for" чтоб его закрепить...

ivashkevich 01.06.2020 в 16:24

Решение может быть любым, задания с CZ не связаны с темой урока и сделаны для развития навыка написания алгоритмов

[email protected] 01.06.2020 в 16:28

Фуух, понял, тогда все нормально!)

omeluhin89 20.06.2020 в 20:20
<?php
$line = trim(fgets(STDIN));
$array = explode(' ', $line);
$index = count($array) - 1;
for($i = $index; $i >= 0; $i--) {
    $revers[] = $array[$i];
}
echo implode(' ', $revers);

Мой вариант тоже работает)

omeluhin89 20.06.2020 в 20:22

И еще вопрос: как сбросить пароль на https://codingzone.io/? :)

ivashkevich 21.06.2020 в 08:31

Ой, напиши на почту, я пока не сделал этого)

ivashkevich 21.06.2020 в 08:32

Отлично

UtillitE 29.06.2020 в 20:36

Привет. Артём, скажи, почему метод решения задачи в PHPStorm работает, а скопированная и вставленная в окно на сайте https://codingzone.io тест не проходит?

ivashkevich 29.06.2020 в 20:38

Привет. Нажимал кнопку "детали"?

UtillitE 29.06.2020 в 20:58

Нажимала. Вот что выдало:
Детали
Input:
my string
Expected output:
MY STRING
Actual output:
HELLO WORLD

ivashkevich 29.06.2020 в 21:02

Вам нужно считать данные из stdin, а не хардкодить строку "hello world". В тесте, который у вас падает, приходит строка my string, и из неё нужно сделать строку с большими буквами.

UtillitE 29.06.2020 в 21:14

Понятно, буду дальше пробовать.

UtillitE 29.06.2020 в 21:18

Всё, я разобралась!!!

<?php
$line = trim(fgets(STDIN));
$line = strtoupper($line);
echo $line;
ivashkevich 30.06.2020 в 06:03

Отлично)

UtillitE 29.06.2020 в 20:51

Задача.
Необходимо фразу hello world вывести как HELLO WORLD.

<?php

$str = "hello world";
$str = strtoupper($str);
echo $str;
ivashkevich 29.06.2020 в 20:58

Зачем новую ветку создали? Отвечайте в ту же. Вопрос тот же - кнопку "показать детали" нажимали?

UtillitE 29.06.2020 в 21:00

Нажимала. Вот что выдало:
Детали
Input:
my string
Expected output:
MY STRING
Actual output:
HELLO WORLD

UtillitE 29.06.2020 в 22:15

Поменять в строке местами слова. Вот что получилось в PHPStorm

<?php
$input  = ['hello',' ', 'world'];
$reversed = array_reverse($input);
echo implode ($reversed);
UtillitE 29.06.2020 в 23:31

А так получилось решение на на сайте

<?php
$line = trim(fgets(STDIN));
$input = explode (' ', $line);
$input1  = array[$input];
$reversed = array_reverse($input);
echo implode (' ',$reversed);
ivashkevich 30.06.2020 в 06:05

Строки пишутся в одинарных кавычках.
Синтаксис array() - устарел, используйте [].
И проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

annferny 03.07.2020 в 13:41
<?php
$string = fgets(STDIN);
$array = explode(' ', $string);

for ($i = count($array) - 1; $i >= 0; $i--) {
    echo $array[$i];
    echo ' ';
}
ivashkevich 06.07.2020 в 06:55

Копировать сюда решение не нужно. Достаточно того, что все тесты на CZ прошли

VitaliyB 15.07.2020 в 13:32

Перевернуть строку.
Что не так? Наверное, я не правильно понял задание...
Вроде конечным результатом строка переворачивается, но тест не засчитан.

<?php

$arr = ['0' => 'hello', '1' => 'world'];

echo $arr[1] . ' ', $arr[0];

Результат
Ожидаемый вывод отличается от актуального. Проверьте ваш алгоритм.
Детали
Input:
hello world2
Expected output:
world2 hello
Actual output:
world hello

ivashkevich 16.07.2020 в 13:18

Данные нужно брать из stdin. Первый тест у вас прошёл, во втором - другая строка и другой ожидаемый результат.

VitaliyB 20.07.2020 в 09:40

Где можно подробнее почитать об stdin и stdout?

ivashkevich 21.07.2020 в 11:59

в гугле или тут

[email protected] 05.10.2020 в 01:29

Числа Фибоначчи, я их родственник, -2 часа из жизни, и всё из-за хитрых проверок с числами 0 и 1.

Но теперь этот ответ удовлетворяет всем запросам, включая 0 и 1.

$line = 0;

$i = 1;
$n = 0;

for ($m = 0; $m <= $line - 1; $m++) {
    echo $n . ' ';
    $n = $i + $n;
    $i = $n - $i;
}
ivashkevich 06.10.2020 в 07:54

Отлично

pixel 05.11.2020 в 23:49
<?php
//развернуть строку
$line = trim(fgets(STDIN));
$arr = explode(' ', $line);
    $countArr = count($arr);
    while ($countArr > 0) {
        if ($countArr == 0) {
            echo $arr[$countArr];
        } else {
            echo $arr[$countArr - 1] . ' ';
        }
        $countArr--;
    }
ivashkevich 06.11.2020 в 16:08

Всё отлично, но проблема с форматированием. Сделайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

P.S. Код для задач, на котором прошли тесты, можно не скидывать.

Khrystyna 04.02.2021 в 00:43
<?php
$line = strtoupper(fgets(STDIN));
echo $line;

<?php
$line = trim(fgets(STDIN));
$words = explode(' ', $line);
while ($words !== []) {
    echo array_pop($words);
    echo ' ';
}
ivashkevich 04.02.2021 в 07:39

Не нужно скидывать код, если прошли все тесты. Если же тесты не прошли и вам что-то непонятно - задавайте вопрос)

Логические задачи с собеседований