Чат Telegram
Группа ВКонтакте
Новый комментарий


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

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

humanidis@gmail.com 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

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

ArtemijeKA 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. Ну да, что-то вы перемудрили тут. Нагуглите алгоритм нахождения чисел фибоначи, он проще, чем вы думаете. Ну или можете поискать более простое решение в комментах выше.
stasokulov@gmail.com 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

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

tmv.nika@mail.ru 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? Она просто с потолка была взята.

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

demyanovpaul@yandex.ru 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 всегда будет равно сумме этих значений.

7vs13@inbox.ru 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

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

red.shuhov48@gmail.com 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. Программа выполняется бесконечно
red.shuhov48@gmail.com 26.01.2019 в 08:52

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

volodia.pavloff201343@gmail.com 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

Отлично!

babls2332@gmail.com 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

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

ilshatgb@mail.ru 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

Отлично

che4151999@gmail.com 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

Отлично

krollik1000000@gmail.com 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

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

romaartemov1999@gmail.com 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
prinzplanloser0514@gmail.com 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

Отлично!

zuxarevaalina88@gmail.com 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

Супер!

anton-gogo@mail.ru 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

Отлично!

ivanenko_94@mail.ru 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

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

Omigod@live.ru 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

Отлично

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