Выбор оптимального алгоритма в PHP

Иногда проблема кода бывает связана с тем, что выбрано не самое оптимальное решение задачи.

Пусть, к примеру, перед нами стоит задача найти сумму целых чисел от 1 до 1000000. Решим поставленную задачу:

php<?php
  $sum = 0;
  
  for ($i = 1; $i <= 1000000; $i++) {
    $sum += $i;
  }
  
  echo $i;
?>

Что же не так? Дело в том, что для решения поставленной задачи существует математическое решение.

Это решение практически не требует ресурсов! Запрограммируем его:

php<?php
  $n = 1000000;
  $sum = $n * ($n + 1) / 2;
  echo $sum;
?>

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

Задание 1

Найдите количество чисел, делящихся без остатка на 5, из промежутка от 1 до 1000.

Задание 2

Найдите количество цифр, которое понадобится, чтобы записать все числа от 1 до 1000000.

Задание 3

Найдите все простые числа в промежутке от 1 до 10000. Задача со звездочкой, можно не решать.