Wybór optymalnego algorytmu w PHP

Czasami problem kodu może być związany z tym, że wybrano nie najbardziej optymalne rozwiązanie zadania.

Załóżmy, na przykład, że przed nami stoi zadanie znalezienia sumy liczb całkowitych od 1 do 1000000. Rozwiążmy postawione zadanie:

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

Co jest nie tak? Chodzi o to, że dla rozwiązania postawionego zadania istnieje rozwiązanie matematyczne.

To rozwiązanie praktycznie nie wymaga zasobów! Zaprogramujmy je:

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

Morał: przed rozwiązaniem zadania wymagającego dużych zasobów koniecznie sprawdź, czy nie ma dla jego rozwiązania gotowego wzoru matematycznego lub gotowego podejścia matematycznego.

Задание 1

Znajdź liczbę liczb podzielnych bez reszty przez 5, z przedziału od 1 do 1000.

Задание 2

Znajdź liczbę cyfr, które będą potrzebne, aby zapisać wszystkie liczby od 1 do 1000000.

Задание 3

Znajdź wszystkie liczby pierwsze w przedziale od 1 do 10000. Zadanie z gwiazdką, można nie rozwiązywać.